日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

插入法排序c语言程序,插入排序算法及C语言实现

發(fā)布時(shí)間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 插入法排序c语言程序,插入排序算法及C语言实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

插入排序算法是所有排序方法中最簡單的一種算法,其主要的實(shí)現(xiàn)思想是將數(shù)據(jù)按照一定的順序一個(gè)一個(gè)的插入到有序的表中,最終得到的序列就是已經(jīng)排序好的數(shù)據(jù)。

直接插入排序是插入排序算法中的一種,采用的方法是:在添加新的記錄時(shí),使用順序查找的方式找到其要插入的位置,然后將新記錄插入。

很多初學(xué)者所說的插入排序,實(shí)際上指的就是直接插入排序算法,插入排序算法還包括2-路插入排序,表插入排序和

例如采用直接插入排序算法將無序表{3,1,7,5,2,4,9,6}進(jìn)行升序排序的過程為:

首先考慮記錄 3 ,由于插入排序剛開始,有序表中沒有任何記錄,所以 3 可以直接添加到有序表中,則有序表和無序表可以如圖 1 所示:

圖 1 直接插入排序(1)

向有序表中插入記錄 1 時(shí),同有序表中記錄 3 進(jìn)行比較,1<3,所以插入到記錄 3 的左側(cè),如圖 2 所示:

圖 2 直接插入排序(2)

向有序表插入記錄 7 時(shí),同有序表中記錄 3 進(jìn)行比較,3<7,所以插入到記錄 3 的右側(cè),如圖 3 所示:

圖 3 直接插入排序(3)

向有序表中插入記錄 5 時(shí),同有序表中記錄 7 進(jìn)行比較,5<7,同時(shí) 5>3,所以插入到 3 和 7 中間,如圖 4 所示:

圖 4 直接插入排序(4)

向有序表插入記錄 2 時(shí),同有序表中記錄 7進(jìn)行比較,2<7,再同 5,3,1分別進(jìn)行比較,最終確定 2 位于 1 和 3 中間,如圖 5 所示:

圖 5 直接插入排序(5)

照此規(guī)律,依次將無序表中的記錄 4,9 和 6插入到有序表中,如圖 6 所示:

圖 6 依次插入記錄4,9和6

直接插入排序的具體代碼實(shí)現(xiàn)為:

#include

//自定義的輸出函數(shù)

void print(int a[], int n ,int i){

printf("%d:",i);

for(int j=0; j<8; j++){

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

}

printf("\n");

}

//直接插入排序函數(shù)

void InsertSort(int a[], int n)

{

for(int i= 1; i

if(a[i] < a[i-1]){//若第 i 個(gè)元素大于 i-1 元素則直接插入;反之,需要找到適當(dāng)?shù)牟迦胛恢煤笤诓迦搿?/p>

int j= i-1;

int x = a[i];

while(j>-1 && x < a[j]){ //采用順序查找方式找到插入的位置,在查找的同時(shí),將數(shù)組中的元素進(jìn)行后移操作,給插入元素騰出空間

a[j+1] = a[j];

j--;

}

a[j+1] = x; //插入到正確位置

}

print(a,n,i);//打印每次排序后的結(jié)果

}

}

int main(){

int a[8] = {3,1,7,5,2,4,9,6};

InsertSort(a,8);

return 0;

}

運(yùn)行結(jié)果為:

1:13752496

2:13752496

3:13572496

4:12357496

5:12345796

6:12345796

7:12345679

直接插入排序算法本身比較簡潔,容易實(shí)現(xiàn),該算法的時(shí)間復(fù)雜度為O(n2)。

插入排序的其它 4 種排序方法,在后序章節(jié)中有詳細(xì)介紹。

總結(jié)

以上是生活随笔為你收集整理的插入法排序c语言程序,插入排序算法及C语言实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。