首页 新闻 搜索 专区 学院

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

0
[已解决问题] 解决于 2016-09-25 10:46

已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

样例输入

1 7 8 17 23 24 59 62 101

50

样例输出
1 7 8 17 23 24 50 59 62 101 
 
我的代码(得不到想要的结果,不知道哪里错了,求解答,谢谢帮忙)

#include <iostream>
using namespace std;
int main()
{
int a[10],num;
for(int i=0;i<9;i++)
{
cin>>a[i];
}
cin>>num;
if(a[0]<a[1])
{
if(num<a[0])
//将原数组的元素分别往后移动一位
{
for(int i=0;i<10;i++)
a[i+1]=a[i];
a[0]=num;
}
else if(num>a[9])
a[10]=num;
else
for(int i=0;i<9;i++)
{
if(num>a[i]&&num<a[i+1])
{
for(int j=9;j>=i+2;j++)
{
a[j]=a[j-1];
}
a[i+1]=num;
}
break;
}
}
else
{
if(num>a[0])
//将原数组的元素分别往后移动一位
{
for(int i=0;i<10;i++)
a[i+1]=a[i];
a[0]=num;
}
else if(num<a[9])
a[10]=num;
else
for(int i=0;i<9;i++)
{
if(num<a[i]&&num>a[i+1])
{
for(int j=9;j>=i+2;j++)
{
a[j]=a[j-1];
}
a[i+1]=num;
}
break;
}
}
for(int i=0;i<10;i++)
{
cout<<a[i]<<endl;;
}
return 0;
}

computerKID的主页 computerKID | 菜鸟二级 | 园豆:202
提问于:2016-09-03 16:56
< >
分享
最佳答案
0

先判断原来的第0个和第八个的大小.判断是升序还是降序.

然后分支做插入

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29369 | 2016-09-03 17:14

我就是这样的啊,我比较a[0]和a[1]来判断是升序还是降序

代码改进了一点可以得到第一个和最后一个插入后结果

#include <iostream>
using namespace std;
int main()
{
int a[10],num;
for(int i=0;i<9;i++)
{
cin>>a[i];
}
cin>>num;
if(a[0]<a[1]) //原顺序从小到大
{
if(num<a[0])
//将原数组的元素分别往后移动一位
{
for(int i=8;i>=0;i--)
a[i+1]=a[i];
a[0]=num;
}
else if(num>a[9])
a[9]=num;
else
for(int i=0;i<9;i++)
{
if(num>a[i]&&num<a[i+1])
{
for(int j=8;j>=i+1;j++)
{
a[j+1]=a[j];
}
a[i+1]=num;
}
break;
}
}
else //原顺序从大到小
{
if(num>a[0])
//将原数组的元素分别往后移动一位
{
for(int i=8;i>=0;i--)
a[i+1]=a[i];
a[0]=num;
}
else if(num<a[9])
a[9]=num;
else
for(int i=0;i<9;i++)
{
if(num<a[i]&&num>a[i+1])
{
for(int j=8;j>=i+1;j++)
{
a[j+1]=a[j];
}
a[i+1]=num;
}
break;
}
}
for(int i=0;i<10;i++)
{
cout<<a[i]<<endl;;
}
return 0;
}

computerKID | 园豆:202 (菜鸟二级) | 2016-09-03 17:17
其他回答(1)
0

判断好升序还是降序后循环比对插入

梦天涯 | 园豆:103 (初学一级) | 2016-09-03 17:47

 已经解决了,++和--搞错了

 

支持(0) 反对(0) computerKID | 园豆:202 (菜鸟二级) | 2016-09-03 17:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册