之三 直接插入排序
直接插入排序的思想是,把数组分成两部分,前面的部分是已经排好序的,将待插入的数字,一个个对比之前排好的数列,找到合适的位置并插入其中,此位置之后的数字往后移一位。
如 数列 1,3,4,5,6, 要将2插入到前面去,就是从6开始比对,6比2大,就比对前一位,直到找到比2小的那个位置。插入之后,后面所有数字向后移动一位。
1 void sort(int arr[], int len) 2 { 3 4 for (int i = 1; i < len; ++i) //从数列第一个开始插入,一共插入len-1次 5 { 6 int j; 7 int temp = arr[i]; //待插入的数字 8 for (j = i; j > 0 && temp < arr[j-1]; --j) 9 arr[j] = arr[j-1]; //向后移动一位 10 arr[j] = temp; 11 } 12 }
验证一下:
1 int main(int argc, char *argv[]) 2 { 3 int array[10] = {10,9,8,7,6,5,3,3,2,1}; 4 sort(array, 10); 5 int k = 0; 6 while (k <= 9) 7 { 8 cout << array[k] << " "; 9 k++; 10 } 11 system("PAUSE"); 12 return EXIT_SUCCESS; 13 }

浙公网安备 33010602011771号