有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

之前发过一个版本,再次写这个代码,感觉这个版本更简单,更容易理解 

#include<stdio.h>
main(){
	int N=10,b=1,a[N],i,j,temp,insert;
	printf("请输入%d个数为数组赋初值:",N);
	for(i=0;i<10;i++){//为数组赋初值 
		scanf("%d",&a[i]);
	}
	for(i=0;i<N-1;i++){//利用冒泡,将数组从小到大排序 
		for(j=0;j<N-1-i;j++){
			if(a[j]>=a[j+1]){
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
	printf("%d个数从小到大排序之后的顺序:",N);
	for(i=0;i<N;i++){//输出数组排序结果
		printf("%d ",a[i]); 
	}
	printf("\n");
	while(b){//用while循环控制是否想再次插入数字,最少是插入一次,并且满足条件的话可以一直往数组中插入数字 
		printf("\n请再次输入一个数:");
		scanf("%d",&insert);//输入插入的数字 
		printf("按原来排序的规律,将%d插入数组中,排序后的顺序为:",insert);
		N=N+1;//将数组扩大一个空间,并且是每while一次就扩大一个空间 
		for(i=0;i<N-1;i++){//循环跟需要插入的数比较 
			if(a[i]>=insert){
				temp=a[i];
				a[i]=insert;
				insert=temp;
			}
		}
		a[N-1]=insert;//比较完之后,insert是最大的数,直接放到数组新增加的那个空间 
		for(i=0;i<N;i++){//输出最后排序之后的数组 
			printf("%d ",a[i]);
		}
		printf("\n是否继续插入,按1继续,0结束:");
		scanf("%d",&b);//对应while循环,如果不想再插入,就输入0结束循环,反之也是一样的道理。 
	}
	return 0;
}

 

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值