第二週test 6.數列有序 HDU2019
阿新 • • 發佈:2018-12-14
#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; }