原理都很清楚:
讓看起來很簡單,但是實現的時候,也需要思考一些細節。
二分法的插入排序關鍵在於插入位置的下標。
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...