/* * 插入排序 * 基本思想 * 1)从第0个位置开始,假设第0个位置为最小,跳到第二个位置, * 如果比第0个位置的数要小,插到第0个位置的前面,跳到第三个 * 位置,在前面已经排好序的情况下,找到合适的插入点,其它 * 情况依次类推 * 2)总共需要插入n-1次 * 稳定性:稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) */ void InsertSort(int a[], int n) { int j, temp;; for(int i=1; i<n; i++) { j = i; //保存当前位置的值 temp = a[i]; //找到合适的插入点 while(temp < a[j-1]) { a[j] = a[j-1]; j--; } a[j] = temp; } } int main() { int a[] = {3, 8, 15, 7, 21, 6}; InsertSort(a, 6); for(int i=0; i<6; i++) { cout << a[i] << " "; } cout << endl; system("pause"); return 0; }