排序(一)插入排序

2021-09-29 09:37:22 字數 641 閱讀 3566

繼插入排序①,這裡說一下折半插入排序

從前面的迴圈中可以看出直接插入排序是邊比較邊移動的

這裡講的折半插入排序則是將比較和移動分開。(不斷的折半查詢定位再一次性的移動元素,最終插入元素)

void

insertsort

(int a,

int n)

else

//中間元素小於要插入的元素,則在後半部分

}for

(j=i-

1;j>=high+1;

--j)

//從後向前移動元素

a[high+1]

=a[0];

//到此序列中乙個元素處理結束

}}

上述**注釋很詳細,就簡單的舉個例子吧,

比如序列:5,4

開始5在有序序列中,然後從第二個元素即4開始插入,low和high均指向了5,滿足while迴圈。此時high減一,不滿足迴圈,進入for迴圈,將5向後移,4插入即可。

時間複雜度:雖然查詢位置優化了效能,但是移動原理和①相同,所以時間複雜度還是o(n*n)

穩定性:穩定

排序演算法(一) 插入排序

首先,對排序演算法 輸入 n 個數 輸出 序列的乙個排序,使得a1 a2 an 待排序的數為key 插入排序演算法,是乙個對少量元素進行排序的有效演算法.其偽 如圖 插入排序演算法在形式上類似於我們平時打牌時,邊抽牌邊整理撲克牌的順序,我們將新的牌與手中已經整理好順序的撲克牌進行比較,最終將抽到的牌...

排序演算法(一) 插入排序

一 插入排序 直接插入 二分插入 希爾排序 基本思想 從前面已經排序好的資料中查詢合適的位置,將待排序資料插入到該位置 從後面向前找合適的位置 1 直接插入排序 基本思想 從右向左查詢 從左邊已排序好的資料中查詢合適的位置,插入待排序的資料。private static void derictins...

排序演算法 一 插入排序

演算法實現 insertsort.c include void insertsort int arr,int len int i 0,j 0,k 0 int tmp 0 for i 1 i 0 tmp演算法思想 保證被比較值的左側為有序,在將被比較的值插入到這個有序的佇列裡。例子分析 1.首先arr...