插入排序、

描述

给定一个已排好序的数组和一个数,要求将该数插入到数组中,使得插入后的数组仍然保持有序。

输入

输入为两行,第一行包含已排序好的数组,每个数用空格分隔;第二行为需要插入的数。

输出

输出插入新数后的数组,每个数用空格分隔。

输入样例 1 

1 3 5 7 9
4

输出样例 1

1 3 4 5 7 9

输入样例 2 

-5 -3 0 2 4
-2

输出样例 2

-5 -3 -2 0 2 4

代码一(如下):将插入的数默认存储在数组的最后,然后采用选择排序法全部重排一遍(包括原先排序是顺序还是逆序的两种情况判断)

#include 
using namespace std;
int main()
{
	int a[6];
	int i,j,k,t;
	for (i = 0; i < 6; i++)
	{
		cin >> a[i];
	}
	for (i = 0; i < 6; i++)
	{
		k = i;
		if (a[0] < a[4])
		{
			for (j = i + 1; j < 6; j++)
			{
				if (a[k] > a[j])k = j;
			}
			t = a[k];
			a[k] = a[i];
			a[i] = t;
		}
		else
		{
			for (j = i + 1; j < 6; j++)
			{
				if (a[k] < a[j])k = j;
			}
			t = a[k];
			a[k] = a[i];
			a[i] = t;
		}
	}
	for (i = 0; i < 6; i++)
	{
		cout << a[i] << " ";
	}
	return 0;
}

代码二(如下):原先排序为顺序,无判断。不用采用选择排序法。

#include 
using namespace std;
int main()
{
	int a[6], t, i, k;
	for (i = 0; i < 5; i++)
	{
		cin >> a[i];
	}
	cin >> t;           //插入的数
	for (i = 0; a[i] < t; i++)     //其实相当于for(i=0;i<5;i++){if(a[i]= k; i--)
	{
		a[i] = a[i - 1];           //将数组后面比插入的数大或者等于的数往后移动一空间
	}
	a[k] = t;                   //空出来的空间就是a[k],再将插入的数存储进去
	for (i = 0; i < 6; i++)
	{
		cout << a[i] << " ";
	}
	return 0;
}

你可能感兴趣的:(ACM作业,c++)