1. 程式人生 > 實用技巧 >正宗插入排序演算法

正宗插入排序演算法

正宗插入排序演算法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]<<"\t";
    }
    return 0;
}