C例項 插入排序(簡單插入)

2021-07-25 15:41:19 字數 1113 閱讀 7085

演算法描述:內排序的一種,分為簡單插入排序和shell排序,本例為第一種平雲複雜度n^2。適用於待排數較少的情況。

分析:想想平時打撲克,每當拿起一張新牌,要比較手上牌的順序選擇乙個較為合適的位置插入,本演算法就跟那情況類似。選定待排序的第二個數開始和左邊比較插入,如果比左邊的小則交換(降序排列),依次比較到第乙個數。這樣一次迭代完成整個排序序列。

**:

#include 

/* 演算法偽**,摘至演算法導論(插入排序):

insertion-sort(a)

for j = 2 to a.length

key = a[j]

i = j - 1;

while i > 0

and a[i] > key

a[i + 1] = a[i];

i = i - 1;

a[i + 1] = key;

*/void insort(int

s, int len)

s[j + 1] = key; //還原之前待排的關鍵字

printf("第%d趟排序結果: ",i);

for (index = 0; index

< 10; index ++)

printf("%d ",s[index]);

printf("\n");

}}int main ()

; int i;

printf("待排序列: ");

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

printf("%d ",a[i]);

printf("\n");

insort(a, 10);

printf("序列結果: ");

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

printf("%d ",a[i]);

printf("\n");

return

0;}

執行結果:

shell排序:

關於測試資料生成我寫了個小**:

簡單插入排序和shell插入排序 C語言

偶得空,遂念經典演算法,務必斬其馬下,也解偶之惑也!簡單插入排序 公升序 void insert int str,int len while j 0 tmpstr j 1 tmp shell排序 公升序 void shell insert int str,int len void shell pas...

C 排序插入排序例項詳解

排序 插入排序 插入排序的基本思想是每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。常見的插入排序有插入排序 insertion sort 希爾排程式設計客棧序 shell sort 二叉查詢樹排序 tree sort 圖書館排序 libra...

簡單插入排序

思想 抽出乙個元素,在其前面的元素中找到適當的位置進行插入 這種方式 是將 待插入元素 逐個跟i 1個已排序元素比較,並交換位置 public static void sort int a 設資料序列有n個元素,最好情況 乙個排好序的序列,如。每趟元素與i 1個元素比較的次數是1次。因為前i 1個元...