#include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> #include <vector> // 输出数组元素 void printArr(int* arr, int len) { for (int i = 0; i < len; i++) { printf("%d ", *(arr+i)); } } // 随机生成数组数据 void randArr(int* arr, int len, int maxVal) { srand((int)time(0)); for (int i = 0; i < len; i++) { *(arr+i) = rand() % maxVal; } } void insertSort(int* arr, int len) { int i,j,tmp; for(i = 1; i < len; i++) { tmp = arr[i]; // 保存当前值 for (j = i; j > 0 && tmp < arr[j-1]; j--) { arr[j] = arr[j-1]; arr[j-1] = tmp; } } } void insertSort2(int* arr, int len) { int i,j,tmp; for (i = 1; i < len; i++) { tmp = arr[i];// 保存当前值 j = i-1; // 从当前元素的前一位开始比较 while(j >= 0 && arr[j] > tmp) { arr[j+1] = arr[j]; --j; } arr[j+1] = tmp; } } int main(int argc, char* argv[]) { int len = 15; int* arr = new int[len]; randArr(arr, len, 100); printf("before sort:/n"); printArr(arr, len); //insertSort(arr, len); insertSort2(arr, len); printf("/nafter insertSort:/n"); printArr(arr, len); printf("/n"); return 0; } 运行结果如下: