插入法排序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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值