正宗插入排序算法C++版本,看图一目了然。
最低时间复杂度O(n),最高时间复杂度O(n^2),平均时间复杂度O(n^2)
#include <iostream>
#include <vector>
#include <stack>
#include <cstring>
#include <string>
#include <queue>
#include <algorithm>
#include "TreeNode.h"
using namespace std;
// 正宗插入法排序
void InsertSort(int num[], int length){
int i, j;
for(i = 1; i < length; i++){
if(num[i] < num[i-1]){
// 设置哨兵
int sold = num[i];
for(j = i - 1; j >= 0 && num[j] > sold; j--){
num[j + 1] = num[j];
}
// 将当前值插入正确的位置
num[j + 1] = sold;
}
}
}
int main(int argc, char* argv[]){
int arr[8] = {8,7,6,5,4,3,2,1};
InsertSort(arr, sizeof(arr)/sizeof(arr[0]));
for(int i = 0; i < 8; i++){
cout<<arr[i]<<" ";
}
return 0;
}