1. 程式人生 > >第二週test 6.數列有序 HDU2019

第二週test 6.數列有序 HDU2019

#include <iostream>
using namespace std;

void sort(int**M, int**N, int**p, int t);

int main()
{
	int n, m;
	int**p = new int*;
	int **M=new int*;
	int **N = new int*;

	int k;  //記錄資料組數
	for (int t=0;;++t,k = t)
	{
		cin >> n >> m;  
		M[t] = new int[1];
		N[t] = new int[1];
		M[t][0] = m;  //m放到豎排陣列中
		N[t][0] = n;  //n放到豎排陣列中
		if (n == 0 && m == 0) break;
		

		for (;;)  //*賦值*
		{	
			p[t] = new int[101];
			int i = 0;
			int a;
			cin >> a;
			while (i < n)
			{
				p[t][i] = a;
				++i;
				if(i!=n)cin >> a;
			}
			break;
		}


	}
//	cout << "k=" << k<<endl;
	for(int i=0;i<k;++i)  //輸出
	{
		sort(M, N, p, i);
	}
	//delete
	return 0;
}

	void sort(int**M, int**N, int**p,int t)
	{
		//比較排序(處理一組資料)(第t組)
		for (int i=1;i<N[t][0];++i)
		{
			int f = N[t][0];  //f=該組資料的n,即p的元素個數
			if (M[t][0] > p[t][i - 1] && M[t][0] < p[t][i])  //比較
			{
				for (int k = f; k >i; --k)
				{
					p[t][k] = p[t][k-1];  //移位
					
				}
				p[t][i] = M[t][0];
			}
		}
		for (int i = 0; i < N[t][0] + 1; ++i)
		{
			cout << p[t][i] << ' ';
		}
		cout << endl;
	}