【一】直接插入排序是減治法的一種例項,較為簡單,時間複雜度o(n2)。
下面用遞迴方法:
1.將帶插入數以前的數列看做有序的。
2.由待插入數的一位開始從後往前與帶插入比較直到待插數小於後數大於前數時插入。即:大於插入數的均往後移一位,插入數放在第一位後移數的原位置。
3.遞迴呼叫第2步。直到插入數字置大於資料總長時終止。
源**:
void insertionsort(int *parr,int index, int len)//直接插入排序演算法
for(i=index-1; i>=0 && key【二】快速排序是分治法的一種例項,是最快的排序方法,時間複雜度為o(nlog2n)。
1.快速排序先選擇乙個中軸,通常是第乙個數。
2.設定low和high,分為三部分,分別是小於中軸的數,中軸和大於中軸的數。
3.再將左右兩邊遞迴呼叫第三步,迴圈遞迴,當low=high時終止。
void quicksort(int *parr,int low, int high)//快速排序
{int i = low;
int j = high;
int key = parr[i];
if(low < high)
{while(i < j)
{while(key <= parr[j] && i= parr[i] && i對2000數排序,比較兩種排序,插入排序用時0.005s,快速排序用時0.001s。可見快速排序還是有優勢。
小編水平有限,如有錯誤請指出。
排序 一 直接插入排序
1 直接插入排序 1 定義 直接插入排序 straight insertion sort 是一種最簡單的排序方法。它的基本操作是將乙個記錄插入到乙個長度為m 假設 的有序表中,使之仍保持有序,從而得到乙個新的長度為m 1 的有序表。2 演算法思路 設有一組關鍵字 k 1 k 2 k n 排序開始就認...
排序一 直接插入排序
基本思想 當插入第i i 1 個物件時,前面的i 1 項 元素已經排序完成,這時 用 第 i 項 和 前面的 i 1 項進行比較,然後把插入的位置後面的元素後移一位 再 插入該位置。實現一趟排序的步驟 找位置 移位 插入資料 實現 void insertsort int arr size t siz...
排序演算法之一 直接插入排序
直接插入排序中加入了附加記錄,又稱監視哨或者哨兵。哨兵的主要作用 進人查詢 插入位置 迴圈之前,它儲存了r i 的副本,使不致於因記錄後移而丟失r i 的內容 它的主要作用是 在查詢迴圈中監視下標變數j是否越界。一旦越界 即j 0 因為r 0 可以和自己比較,迴圈判定條件不成立使得查詢迴圈結束,從而...