栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

在升序排序的数组中插入一个元素 用函数编程实现在一个按升序排序的数组中查找x应插入的位置,将x插入数组中,使数组元素仍按升序排列。 提示:插入(Insertion)是数组的基本操作之一。插入法排序算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在升序排序的数组中插入一个元素 用函数编程实现在一个按升序排序的数组中查找x应插入的位置,将x插入数组中,使数组元素仍按升序排列。 提示:插入(Insertion)是数组的基本操作之一。插入法排序算法

我先使用了三个函数参数,参数分别为数组a[],数组元素数量number和需要插入的数字n。函数定义为int f(int a[],int number,int n);

#include 
int f(int a[],int number,int n);//a[]已按升序排列的数组 number数组元素 n需要插入的 
int main()
{
	int size,i,array[size],x,m;
	printf("Input array size:n");
	scanf("%d",&size);
	printf("Input array:n");
	for(i=0;i=a[j]&&n<=a[j+1]){
			j++;
			b[j]=n;
			break;
		}else if(n>=a[number-1]){
			b[number+1]=n;
		}else if(n<=a[0]){
			b[j]=n;
			break;
		}
	}
	for(k=j+1;k 

但结果并不正确: 

调试过程中发现a[number-1]=5,也就是数组中最后一位是5。

 

 

但应该是6才对,于是我在主函数中添加了循环遍历整个数组,想查出数组元素变化在何处,找出问题所在。

添加第一处循环:在scanf("%d",&x);之前添加循环遍历数组,输出数组元素,发现在scanf("%d",&x);之前数组array[5]={1,2,3,4,6},正确的。

 添加第二处循环:在scanf("%d%,&x);之后添加循环,遍历整个数组,输出数组元素,发现在scanf("%d",&x);之后数组array[5]={1,2,3,4,5},错误的!!

既然如此,不会别的,那就把scanf("%d",&x);放在函数里吧。

#include 
int f(int a[],int number);//a[]已按升序排列的数组 number数组元素 n需要插入的 
int main()
{
	int size,i,array[size],x,m;
	printf("Input array size:n");
	scanf("%d",&size);
	printf("Input array:n");
	for(i=0;i=a[j]&&x<=a[j+1]){
			j++;
			b[j]=x;
			break;
		}else if(x>=a[number-1]){
			b[number+1]=x;
		}else if(x<=a[0]){
			b[j]=x;
			break;
		}
	}
	for(k=j+1;k 

至此此题就算是完成了,也可以不用函数做。之前也写过一道输入一个数插入已知升序数组中

 

 

#include 
int main()
{ 
	int a[20]={2,4,6,8,10,12,14,16};
	int n,i,j,b[9];
	printf("Enter n:");
	scanf("%d",&n);
	for(i=0;i<9;i++){
		b[i]=a[i];//思路就是把未插入之前的a[i]赋值给b[i] 
		if(n>=a[i]&&n<=a[i+1]){
			b[i+1]=n;
			i++;
			break;  //假如n在数组之间,插入n在第i+1位,因为break,不继续循环,所以i++ 
		}else if(n>=a[7]){
			b[8]=n; //n大于16
		}else if(n<=a[0]){
			b[i]=n; //n小于2 
			break;
		}
	} 
	for(j=i+1;j<10;i++,j++){
		b[j]=a[i]; 
	}
	for(j=0;j<9;j++){
		printf("%d ",b[j]);
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号