题目描述
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。
假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。
然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。
突破口:找到哪个数值是可被覆盖的,本题中最初第十个元素a[9]初始化为0,可被覆盖,故j=10时,a[j]=a[j-1]
#include<iostream>
using namespace std;
int main()
{
int a[10]={0},temp;
for(int i = 0; i < 9; i++)
{
cin>>a[i];
}
cin>>temp;
if(temp>a[8])
{
a[9]=temp;
}
else
{
for(int i = 0; i < 10; i++)
{
if(a[i]>=temp)
{
for(int j=9; j>=i+1; j--)
{
a[j] = a[j-1];
}
a[i] = temp;
break;
}
}
}
for(int i = 0; i < 10;i++)
{
cout<<a[i]<<endl;
}
return 0;
}