直接插入排序法---排序算法(一)

24 篇文章 0 订阅
10 篇文章 0 订阅

1.排序原理

从小到大排序

从第二个数开始比较,将其与前一个数比较,如果小于前一个数,则插入,使其前面数是从小到大排列

例如 数组为:38 65 97 76 13 27 49

i=2   65>38,所以不要动 

i=3   97>65,所以不要动

i=4  76<97, 所以要将76插入到65到97之间 ,为 38 65  76  97  13 27 49

i=5  13<97,所以要将13插入到38之前,使其从小到大排列 为  1338  65  76  97   27 49

i=6   27<97,所以要将27插入到13与38之间,使其从小到大排列 为  13 27  38  65  76  97   49

i=6   49<97,所以要将49插入到38与65之间,使其从小到大排列 为  13 27  38   49  65  76  97  

排序结束

2.代码

#include <stdio.h>
//打印数组
void printArray(int a[],int size){
	printf("数组为:[%d] ",a[0]);
	for (int i=1;i<size;i++)
	{
		printf(" %d ",a[i]);
	}
	printf("\n");
}

void main(){
	//a[0]为监视哨
	int a[8]={0,38,65,97,76,13,27,49};

	for (int i=2;i<=7;i++)
	{
		printf(" i=%d  ",i);
		printArray(a,8);
		if(a[i]<a[i-1]){
			a[0]=a[i];
			a[i]=a[i-1];
			for (int j=i-2;a[0]<a[j];j--)
			{
				a[j+1]=a[j];
			}
			a[j+1]=a[0];
		}
	}
	printf("结果 ");
	printArray(a,8);
}


3.结果

从小到大

 i=2  数组为:[0]  38  65  97  76  13  27  49
 i=3  数组为:[0]  38  65  97  76  13  27  49
 i=4  数组为:[0]  38  65  97  76  13  27  49
 i=5  数组为:[76]  38  65  76  97  13  27  49
 i=6  数组为:[13]  13  38  65  76  97  27  49
 i=7  数组为:[27]  13  27  38  65  76  97  49
结果 数组为:[49]  13  27  38  49  65  76  97

从大到小

 i=2  数组为:[0]  38  65  97  76  13  27  49
 i=3  数组为:[65]  65  38  97  76  13  27  49
 i=4  数组为:[97]  97  65  38  76  13  27  49
 i=5  数组为:[76]  97  76  65  38  13  27  49
 i=6  数组为:[76]  97  76  65  38  13  27  49
 i=7  数组为:[27]  97  76  65  38  27  13  49
结果 数组为:[49]  97  76  65  49  38  27  13



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值