题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
代码1:
#include<iostream>
#include<list>
using namespace std;
int main()
{
int number;
list<int>lis;
list<int>::iterator it;
int a[10] = {1,3,5,7,9,11,13,15,17,19};
for (int i = 0; i < 10; i++)
lis.push_back(a[i]);
cin >> number;
lis.push_back(number);
lis.sort();
for (it = lis.begin(); it != lis.end(); it++)
cout << *it << ' ';
return 0;
}
代码2:
#include<iostream>
using namespace std;
int main()
{
int a[11] = { 1,4,6,9,13,16,19,28,40,100 };
int temp1, temp2, number, end, i, j;
cout << "原数组是:" << endl;
for (i = 0; i < 10; i++)
cout<<a[i]<<' ';
cout << endl << "输入一个新数字:";
cin >> number;
end = a[9];
if (number > end)//不需要移位
a[10] = number;
else
{
for (i = 0; i < 10; i++)
{
if (a[i] > number)
{
temp1 = a[i];
a[i] = number;
for (j = i + 1; j < 11; j++)
{
temp2 = a[j];
a[j] = temp1;
temp1 = temp2;
}
break;
}
}
}
for (i = 0; i < 11; i++)
cout << a[i] << ' ';
return 0;
}