这篇文章主要讲解了“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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。