直接插入排序

直接插入排序基本思想

每次从无序表中提取一个元素与有序表中的元素进行比较,将其插入到有序表中。

假定无序表Array[1...n],第一趟比较时,Array[0]为一个有序表,Array[1]将于Array[0]进行比较,如果Array[1]小于Array[0],则将Array[1]的值插入到Array[0]之前。这样有序表就变为了Array[0...1],无序表为Array[2...n]。

第i趟比较时,有序表应该为Array[0...i],此时将Array[i]与Array[i-1]比较,若Array[i]大于等于Array[i-1],则Array[i]的位置不变(因为Array[i-1]作为有序表的最后一个元素,自然也是有序表中最大的元素,所以只要Array[i]大于等于Array[i-1],自然有就大于等于有序表中的所有元素)。若Array[i]小于Array[i-1],则从有序表的第一个元素(即Array[0])开始与Array[i]进行比较,直到找到第一个大于Array[i]的元素,将Array[i]插入到该元素之前。

C#代码:

 

 1     using System;
 2 
 3     public class SortMath
 4     {
 5         public static void InsertSort<T>(T[] array) where T : IComparable
 6         {
 7             for (int i = 1; i < array.Length; i++)
 8             {
 9                 if (array[i].CompareTo(array[i - 1]) < 0)
10                 {
11                     for (int j = 0; j < i; j++)
12                     {
13                         if (array[i].CompareTo(array[j]) < 0)
14                         {
15                             T temp = array[j];
16                             array[j] = array[i];
17                             array[i] = temp;
18                         }
19                     }
20                 }
21             }
22         }
23     }

 

 

 

posted @ 2013-08-03 22:19  年轻的young  阅读(122)  评论(0)    收藏  举报