您好,登錄后才能下訂單哦!
這篇文章主要講解了“C語言怎么實現插入排序算法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言怎么實現插入排序算法”吧!
一、什么是直接插入算法?
直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的紀錄按其關鍵碼值的大小逐個插入到一個已經排好序的有序序列中,直到所有的紀錄插入完為止,得到一個新的有序序列。
選擇排序對大小為N的無序數組R[N]進行排序,進行N-1輪選擇過程。首先將第1個元素作為已經排序好
的子數組,然后將剩余的N-1個元素,逐個插入到已經排序好子數組;。因此,在第 i輪排序時,前i個
元素總是有序的,將第i+1個元素插入到正確的位置。
二、算法實現過程:
第1輪
[ 3 ] [ 2 4 1 ] (最初狀態,將第1個元素分為排序好的子數組,其余為待插入元素)
[ 3 ] [ 2 4 1 ] (由于3>2,所以待插入位置j=1)
[ 2 3 ] [ 4 1 ] (將2插入到位置j)
第2輪
[ 2 3 ] [ 4 1 ] (第1輪排序結果)
[ 2 3 ] [ 4 1 ] (由于2<4,所以先假定j=2)
[ 2 3 ] [ 4 1 ] (由于3<4,所以j=3)
[ 2 3 4 ] [ 1 ] (由于4剛好在位置3,無需插入)
第3輪
[ 2 3 4 ] [ 1 ] (第2輪排序結果)
[ 2 3 4 ] [ 1 ] (由于1<2,所以j=1)
[1 2 3 4 ] (將1插入位置j,待排序元素為空,排序結束)
三、C語言程序代碼
#include<stdio.h>
int main(void)
{
int i;
int a[10]={2,4,6,8,0,1,3,5,7,9};
printf("原數組為:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n") ;
crpx(a,10);
printf("排序后的數組為:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
int crpx(int *a,int n)
{
int in,out,tmp;
for(out=1;out<n;out++)
{
tmp=a[out];
in=out;
while(in>0&&a[in-1]>tmp)
{
a[in]=a[in-1];//大的數向后移一位
in--;
}
a[in]=tmp;
}
}
感謝各位的閱讀,以上就是“C語言怎么實現插入排序算法”的內容了,經過本文的學習后,相信大家對C語言怎么實現插入排序算法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。