直接插入排序(straight insertion sort)的基本思想是:把n個待排序的元素看成為乙個有序表和乙個無序表。開始時有序表中只包含1個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排序過程。
插入排序時間複雜度
直接插入排序的時間複雜度是o(n2)。
假設被排序的數列中有n個數。遍歷一趟的時間複雜度是o(n),需要遍歷多少次呢?n-1次!因此,直接插入排序的時間複雜度是o(n2)。
插入排序穩定性
直接插入排序是穩定的演算法,它滿足穩定演算法的定義。
演算法穩定性-- 假設在數列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;並且排序之後,a[i]仍然在a[j]前面。則這個排序演算法是穩定的!
#includeusing namespace std;
template bool lessthan(const t &a, const t &b)
template void exch(t &a, t &b)
template void show(const vector&a)
template bool issorted(const vector&a)
return true;
}template void read(vector&v, const string s) }}
template void insertionsort(vector&a)
}}
#include#include#include#include#include#include#include#include"sort.h"
using namespace std;
int main()
cout << "執行時間是" << time << endl;
system("pause");
}
插入排序演算法(C實現)
總體思路是 先記錄每一次要插入的值,插入的值依次與前面插入的值比較大小,直到找到那個值,然後後面的值全部後移空出的位置,就是他的正確位置。迴圈n次實現排序。printf 排序之前 n for int i 0 i 5 i insertvalue a,5 printf n printf 排序之後 n f...
C 實現插入排序演算法
插入排序演算法的原理 從前往後依次把元素插入到相應的位置。比插入元素大的向後移乙個單位,直到找到比其小或者相等的元素才停止迴圈,並把元素插入到當前位置。時間複雜度 o n 2 以下為實現 include using namespace std void sort int arr,int length...
插入排序演算法(4)
目錄 插入排序演算法原理 插入排序演算法的使用場景 插入排序演算法的實現 插入排序演算法的執行結果 在插入排序中,需要將取出的資料與其左邊的數字進行比較。就跟前面講的步驟一樣,如果左邊的數字更小,就不需要繼續比較,本輪操作到此結束,自然也不需要交換數字的位置。然而,如果取出的數字比左邊已歸位的數字都...