直接插入排序
直接插入排序基本思想
每次从无序表中提取一个元素与有序表中的元素进行比较,将其插入到有序表中。
假定无序表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 }

浙公网安备 33010602011771号