1. 程式人生 > >9111:有序順序表的插入

9111:有序順序表的插入

Problem Description

有一順序表List,表中的元素值遞增有序,現要求將給定值插入該順序表中,同時保持順序表的遞增有序性。插入完成後,輸出新表的內容。(假設無表滿和重複值情況)

 Input

有多組資料,每組資料佔兩行。
每組第一行有兩個整數,第一個為表長n(0<n<50),第二個為值x;
第二行為表的各元素值。

 Output

每組資料的輸出佔一行,具體輸出如題。每兩個元素之間有一空格。

 Sample Input

5 4
1 3 5 7 9

 Sample Output

1 3 4 5 7 9
#include<iostream>
using namespace std;
int main()
{
   int a[50],i,n,x;
   while(cin>>n){ 
   cin>>x;  
   for(i=0;i<n;i++)
   cin>>a[i];             //輸入已排好的9個元素
                   //輸入需要插入的數字
   i=n-1;                   //從已知數列的最後一位與N進行比較。
   while(i>=0&&a[i]>x)
   {
       a[i+1]=a[i];        //最大的數往最右面排
       i--;                //使上次已排好的數字不參與這次的排序
   }
   i++;                    //此時即為a[i]
   a[i]=x;
   n++;
   for(i=0;i<n-1;i++)
  
   cout<<a[i]<<' '; //順序輸出 
   cout<<a[n-1];

cout<<endl;
}
    return 0;
}

 

 

我所遇到的問題:

今天oj小測的時候,我一直糾結這道題,浪費了好多時間,今天下午仔細研究了一下