C语言怎么实现插入排序算法

这篇文章主要讲解了“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
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 {
tmp=a[out];
in=out;
while(in>0&&a[in-1]>tmp)
{
a[in]=a[in-1];//大的数向后移一位 
in--;
}
a[in]=tmp;  
}
}

感谢各位的阅读,以上就是“C语言怎么实现插入排序算法”的内容了,经过本文的学习后,相信大家对C语言怎么实现插入排序算法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章标题:C语言怎么实现插入排序算法
文章网址:http://scyanting.com/article/jiioho.html