c语言随机数直接插入排序,C语言 直接插入排序(附源代码)

插入排序思想:默认初始数组下标为0的数字为有序序列,每次从后续数组中顺序拿一个数字,将这个数字放到前面的有序序列中,放的位置要确保放完之后依旧是有序的。

举例说明

初始乱序数组    int a[10]={6,2,4,7,5,8,9,10,3,1}

默认有序序列为6           2 ,4, 7, 5, 8, 9, 10, 3, 1

从后面拿一个数字2

由于2比6小,所有放6前边

2, 6           4, 7, 5, 8, 9, 10, 3, 1

从后面拿一个4

由于4比2大,4不和2交换,再判断4和6的大小,4小于6,4和6交换

2, 4, 6         7, 5, 8, 9, 10, 3, 1

从后面拿一个7

7和2比,不交换

7和4比,不交换

7和6比,不交换

2, 4, 6 ,7        5, 8, 9, 10, 3, 1

从后面拿一个5

5和2比 不交换

5和4比 不交换

5和6比 交换

2, 4, 5, 7      6, 8, 9, 10, 3 ,1

6和7比 交换

2, 4, 5,6, 7       8, 9, 10, 3 ,1

以此类推

源代码如下

#include void insertsort(int* p);

int main()

{

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

insertsort(a);

for(int i=0;i<10;i++)

{

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

}

return 0;

}

void insertsort(int* p)

{

int temp;

for(int i=1;i<10;i++)//默认第一个数是有序序列,因此只需要循环n-1次

{

for(int j=0;j{

if(*(p+i)             {

temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值