1. 程式人生 > >排序---插入排序

排序---插入排序

1. 插入排序

插入排序Insert Sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。【詳情見維基百科

使用插入排序為一列數字進行排序的過程如下圖:

插入排序
Insertion sort animation.gif 使用插入排序為一列數字進行排序的過程
分類 排序演算法
資料結構 陣列
最壞時間複雜度 O(n^{2})
最優時間複雜度 O(n)
平均時間複雜度 O(n^{2})
最壞空間複雜度 總共O(n) ,需要輔助空間O(1)
  2.  插入排序C++
#include<iostream>
#include<vector>
using namespace std;

void InsertSort(vector<int
> &array){ for(int i = 1; i < array.size(); i++){ if(array[i] < array[i-1]){ int temp = array[i]; int j = i; while(j >= 1 && temp < array[j-1]){ array[j] = array[j-1]; j--; } array[j]
= temp; } } } int main(int argc, char const *argv[]) { vector<int> a1 = {5, 9, 0, 1, 3, 6, 4, 8, 2, 7}; InsertSort(a1); for(auto &it : a1) cout<<it<<' '; cout<<endl; return 0; }