主要思想:將數列分為前後兩部分,前一部分有序,後一部分無序, 依次將後面無序的序列中的值插入前面有序的序列中;初始時前面有序序列就是首元素; 實現依舊是兩個巢狀的迴圈。
時間複雜度: o(n^2);
demo:
#include#includeusing namespace std;
//插入排序 時間複雜度 o(n^2)
//數列前部分看為有序,依次將後面無序部分數列插入
void my_swap(int& first, int& second)
void inserttionsort(vector& vec) }}
int main()
; cout << "raw val is:\n";
for (auto i : arr)
cout << i << "\t";
cout << endl;
inserttionsort(arr);
cout << "insertionsorted val is:\n";
for (auto i : arr)
cout << i << "\t";
cout << endl;
system("pause");
return 0;
}
輸出結果:
演算法基礎之排序 插入排序
排序演算法是演算法基礎中最常見也是最應該掌握的演算法。插入排序的想法,和我們玩撲克牌起牌相似。從左手為空開始,撲克牌背面朝上至於桌上,每次從桌面上摸一張牌,並將其插入到左手正確的位置,使得左手中的牌是有序的。為了找到這張牌的正確插入位置,從右到左逐一比較左手中的牌。當摸完桌上的牌時,左手中的牌就是排...
基礎排序 插入排序
插入排序 二個序列,一號序列放的是有序序列,二號序列是無序的,最終的目的是要一號序列是二號序列排好的樣子 首先一號序列是空的,那就取乙個數從二號序列中然後放到一號中,總所周知,乙個數的序列肯定是有序的,然後繼續執行這個操作,從二號序列中取乙個數放到一號序列的後面,你要保證的是一號序列在放下乙個數之前...
排序之插入排序
基本思想 每次將乙個待排序的記錄,按其關鍵字大小插入到前邊已經排好序的子陣列中的適當位置,知道全部記錄插入完成為止。分類 直接插入排序和希爾 shell 排序。一 直接插入排序 基本操作 將當前無序區的第乙個記錄r i 插入到有序區r 1.i 1 中適當的位置,使得r 1.i 變為新的有序區。每次使...