C語言 排序之插入排序

2021-09-11 19:12:17 字數 731 閱讀 7611

插入排序(英語:insertion sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in-place排序,因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。

一般來說,插入排序都採用in-place在陣列上實現。具體演算法描述如下:

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

如果該元素(已排序)大於新元素,將該元素移到下一位置

重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

將新元素插入到該位置後

重複步驟2~5

如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的數目。該演算法可以認為是插入排序的乙個變種,稱為二分查詢插入排序。(維基百科)

#includevoid insert_sort(int arr,int len)

} }}int main(void)

; int len;

len=sizeof(arr) / sizeof(*arr);

insert_sort(arr,len);

int i;

for(i=0;i<5;i++)

return 0;

}

C 語言排序演算法之插入排序

1.基本思想 將未排序的資料元素按大小順序插入到已排好序資料序列中,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。例如 對2,4,3,1,6,5進行插入排序。進行排序前,預設2是有序的,為有序區,而4,3,1,6,5是無序的,為無序區。將這五個無序的數按從小到大的順序插入到有序區。...

插入排序(C語言)

採用先確定數字然後找位置的方法。每次把最前面或最後面的沒有排好序的數字插入到已經排好序的數字中間合適的位置上。不斷把選擇好的數字和相鄰的數字做順序調整,直到它被放在合適的位置上。插入排序 include void insert sort int p num,int size int num 0,nu...

插入排序(c語言)

插入排序的基本思想是 每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。插入排序示例 void printfbuff datatype a,size t n 列印陣列 printf n void insertsort datatype a,size t...