OpenJudge百鍊習題解答(C++)--題4085:陣列去重排序
阿新 • • 發佈:2019-01-11
題:
- 總時間限制:
- 1000ms
- 記憶體限制:
- 1000kB
- 描述
-
小吉是銀行的會計師,在處理銀行帳目的時候,遇到了一些問題。有一系列整數,其中含有重複的整數,需要去掉重複後,排序輸出,你能幫助小吉解決問題嗎?
- 輸入
- 輸入資料共2行,第一行輸入測試資料個數n,第二行輸入這n個整數,整數之間可能有重複,整數之間可能有若干個空格。
n <= 105,所有的整數不超過104。 - 輸出
- 輸出為1行,是這n個數去重後從小到大的排序。
- 樣例輸入:
-
3 4 4 2
- 樣例輸出:
-
2 4
解:
#include<iostream>
using namespace std;
void Qsort(int a[], int low, int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];/*用字表的第一個記錄作為樞軸*/
while(first < last)
{
while(first < last && a[last] >= key)
{
--last;
}
a[ first] = a[last];/*將比第一個小的移到低端*/
while(first < last && a[first] <= key)
{
++first;
}
a[last] = a[first];
/*將比第一個大的移到高階*/
}
a[first] = key;/*樞軸記錄到位*/
Qsort(a, low, first-1);
Qsort(a, first+1, high);
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
Qsort(a,0,n-1);
cout<<a[0]<<" ";
for(int i=1;i<n;i++)
{
if(a[i]!=a[i-1])
{
cout<<a[i]<<" ";
}
}
return 0;
}