演算法複習 插入排序

2021-09-12 11:26:44 字數 371 閱讀 2426

原理都很清楚:

讓看起來很簡單,但是實現的時候,也需要思考一些細節。

二分法的插入排序關鍵在於插入位置的下標。

void insertsort(int *arr, int n)

}//insert arr[i] to index t

int tmp = arr[i];

for(int j=i; j>t; j--)

arr[t] = tmp;}}

其中, s為頭指標,t為尾指標。s選擇指向子串行的第乙個元素,t指向最後乙個元素的下乙個位置(很重要)

對於乙個子串行

所以,我們需要乙個指標的值域也是有i+1個值。t正好滿足了這個需求。由於

複習 排序之插入排序

插入排序是穩定的排序演算法。插入排序有點類似與抓撲克牌,比如在玩鬥地主,你在玩手機,然後將牌背面朝上乙個乙個的疊起來,抓完牌,手機放下了,這時就要一張一張的往手上遞牌,然後會以第一張為基準,然後大於第一張就插左邊,小於就插右邊,插排也是這樣的。遍歷陣列list,讓基數為list i 然後如果找到比這...

排序演算法複習 直接插入排序

直接插入排序的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。具體演算法描述如下 1.從...

基礎演算法複習之四 插入排序

插入排序的基本思想是遍歷每乙個元素,當遍歷到第n個元素是,前面n 1個元素是排序好的,此時在前面選擇合適的位置,將第n個元素插入,是穩定排序,時間複雜度是o n 2 include include include includeusing namespace std 插入排序 void insert...