1 /// <summary> 2 /// 直接插入排序(升序排列) 3 /// 原理:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入 4 /// </summary> 5 /// <param name="arr"></param> 6 /// <returns></returns> 7 public static int[] InsertSort(int[] arr) 8 { 9 for (int i = 1; i < arr.Length; i++) 10 { 11 int temp = arr[i]; //第一次是从第二数开始保存的 12 int j = i; 13 14 while ((j > 0) && (arr[j - 1] > temp)) //比较第二个数与第一个数的大小 15 { 16 arr[j] = arr[j - 1]; //将小的数赋值到大的位置 17 --j; 18 } 19 arr[j] = temp; 20 } 21 return arr; 22 }