直接插入排序(straight insertion sort)的基本操作是將乙個元素插入到序列已經有序的那一部分中去,從而使序列中有序的部分逐漸擴大,直到整個序列有序。博主認為直接插入排序過程比較容易理解,所以不作過多贅述,直接上**
#include
void main()
; int
length=sizeof(a)/sizeof(int);
int temp;
int i,j;
for(i=1;ia[j+1]=temp;}}
for(i=0;iprintf("\n");
}
直接插入排序的整個過程是乙個for迴圈巢狀了乙個if條件判斷語句,if語句中又巢狀著乙個for迴圈。外層for迴圈的每一步都是直接進行if條件判斷,比較a[i]和a[i-1],若不符合條件則說明有序,for迴圈直接跳入下一層,若符合則說明無序,進入if語句,將較小的乙個元素賦給」哨兵「temp,緊接著進入**12到14行的for迴圈,這個迴圈是將」合適位置「與a[i]之間的所有元素統一向後移動一位,直到找到」合適位置「也就是說for迴圈不滿足迴圈條件的時候,將temp的值放入到「合適位置」,」哨兵「temp的作用就是儲存待插入元素,以免移動造成其資料丟失。
注:直接插入排序演算法的時間複雜度為o(n^2)
八大排序 插入排序 直接插入排序
基本思想 將乙個記錄插入到已排序好的有序表中,從而得到乙個新,記錄數增1的有序表。即 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。直接插入排序示例 如果碰見乙個和插入元素相等的,那麼插入元素把想插入的...
八大排序之插入排序(直接插入排序 希爾排序)
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序可以分為直接插入排序和希爾排序。直接插入排序 相信大家都玩過撲克牌 即使沒玩過,也聽說過 這就是插入,模擬到我們排序中,就...
八大排序學習之二直接插入排序
直接排序是我常見的一種排序方法,是一種穩定的排序,時間複雜度平均為o n 我們平常生活中也經常無意的用到,比如說打牌的時候經常要排序。首先想想我們打牌的時候是怎麼整理我們的牌的,一開始的時候有可能是完全無序的也有可能是一部分有序的,但是我們就把無序的牌直接插到有序的牌中,並且把比插入的牌大的牌往後移...