複習資料結構:排序(一)——插入排序
從這一篇開始,我開始複習資料結構的知識點,博文主要偏重於每個知識點的核心思想,以及程式碼實現。這一篇先從排序演算法中的插入排序開始。
穩定排序、內排序、適合少量資料量的排序。
當輸入陣列已經排好序時,插入排序需要O(n),快排需要O(n^2)。
當輸入陣列倒序排列時,插入排序時復為:O(n^2)。
平均時間複雜度:O(n^2)。
插入排序的基本做法是:將一個數插入到一個已經排列好的陣列中,通過移動這個數的位置,使得插入之後的陣列也是有序的,不斷重複這個過程,使得最終所有的數都是有序的。
實現程式碼如下:
#include<iostream>
using namespace std;
void InsertSort(int a[], int n)
{
for(int i = 1; i < n; i++)
{
if(a[i] < a[i-1]) // a[i]是待排元素,前面i-1個數已經排序好
{
int j = i-1; // 準備前移
int x = a[i];
a[i] = a[i-1];
while(x < a[j])
{
a[j+1] = a[j];
j--;
}
a[j+1] = x;
}
}
}
int main()
{
int a[] = {2, 1, 5, 8, 4, 3};
InsertSort(a, 6);
for(int i = 0; i< 6; i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}
相關文章
- 資料結構學習(C++)續——排序【2】插入排序 (轉)資料結構C++排序
- 複習資料結構:排序(三)——選擇排序資料結構排序
- 【資料結構】直接插入排序資料結構排序
- 複習一:陣列(4)-插入排序陣列排序
- 資料結構--排序--插入排序--python語言描述資料結構排序Python
- 複習資料結構:排序演算法(六)——堆排序資料結構排序演算法
- 複習資料結構:排序演算法(七)——桶排序資料結構排序演算法
- 複習資料結構:排序演算法(八)——基排序資料結構排序演算法
- 資訊學奧賽複賽複習13-CSP-J2021-02插入排序-排序穩定性、插入排序、sort排序、結構圖、計數排序排序
- 複習資料結構:排序演算法(二)——氣泡排序資料結構排序演算法
- 複習資料結構:排序演算法(四)——歸併排序資料結構排序演算法
- 資料結構&演算法實踐—插入排序資料結構演算法排序
- 【資料結構】直接插入排序_哨兵位資料結構排序
- 04資料結構排序演算法之直接插入排序資料結構排序演算法
- python演算法與資料結構-插入排序(34)Python演算法資料結構排序
- 複習資料結構:排序演算法(五)——快速排序的各種版本資料結構排序演算法
- 資料結構複習一:雜湊表的總結資料結構
- 資料結構複習專貼資料結構
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 演算法與資料結構系列 ( 四 ) - 插入排序法- Insert Sort演算法資料結構排序
- 資料結構學習筆記-堆排序資料結構筆記排序
- 資料結構與排序資料結構排序
- 【資料結構】希爾排序!!!資料結構排序
- 【資料結構】希爾排序資料結構排序
- 【資料結構】堆排序資料結構排序
- 【資料結構】快速排序資料結構排序
- 資料結構學習(C++)續——排序【3】交換排序 (轉)資料結構C++排序
- 連結串列-插入排序排序
- 資料結構與演算法----# 一、排序資料結構演算法排序
- 資料結構學習(C++)續——排序【6】內部排序總結 (轉)資料結構C++排序
- 演算法與資料結構系列 ( 五 ) - 插入排序法改進- Insert Sort演算法資料結構排序
- 資料結構與演算法——插入排序以及C++函式模板實現資料結構演算法排序C++函式
- [資料結構與演算法]-排序演算法之插入排序(insertion sort)及其實現(Java)資料結構演算法排序Java
- 【一起學習排序演算法】4 插入排序排序演算法
- 資料 結構客觀題複習題集
- 演算法複習 - AcWing - 資料結構演算法資料結構
- 考研資料結構複習之線性表資料結構
- 【資料結構】歸併排序!!!資料結構排序