十大排序演算法(二)插入排序

2021-09-27 07:03:53 字數 921 閱讀 2544

前言:插入排序也叫"插牌法"排序;

演算法:1tmp記錄第n個元素,並將第n個元素設為空位;(n>1)

2依次用前n個元素 ,和tmp比較;如果tmp比他們小,將他插入此位置,此時空位前移,再重複迴圈之至比到第乙個位置;

核心**:

k標記位置;tmp儲存元素;a[j+1]=a[j];元素前移;

時間複雜度:

最好o(n),平均 o(n^2),最壞o(n^2);

#include "iostream"

using namespace std;

void insert_sort(int arr, int length)

for (int i = 1; i < length; i++)

}arr[k ] = tmp;//元素插回

} }int main()

; int length = sizeof(arr) / sizeof(*arr);

insert_sort(arr, length);

for (int i = 0; i < length; i++)

cout << arr[i] << " ";

return 0;

}

我們可以對**進行改進;

因為之前的都是有序的,如果tmp比n之前的某數還小,則一定比前面的小!

也就是:如果tmp= 0) && (tmparr[k] = tmp; }}

int main()

; int length = sizeof(arr) / sizeof(*arr);

insert_sort2(arr, length);

for (int i = 0; i < length; i++)

cout << arr[i] << " ";

return 0;

}

十大排序演算法 插入排序

原理 就好比我們打撲克排的抓牌階段,我們一般拿到一張新的排會與前面的牌進行比較,然後放到合適的位置,即每次抓到牌後預設前面的牌已經全部排好序。將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列。從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列的適當位置。...

十大排序 插入排序

插入排序的思想 插入排序的思想有點類似摸撲克牌,首先抽取第一張,當做已經排好序,然後第二張,插入到已經排好序的撲克牌中,依次類推,第三張.直到最後一張。void insertsort int arr,int len arr j tmp tmp arr i 分析 插入排序比氣泡排序快。在陣列基本有序的...

十大排序 直接插入排序

直接插入排序 空間複雜度o 1 時間複雜度最好情況是o n 最壞情況是o n 平均情況是o n 是穩定的內排序演算法 從後往前比較,把後面的元素作為哨兵 includeusing namespace std includevoid insertionsort vector q else q j 1 ...