题:
-
总时间限制:
- 1000ms 内存限制:
- 1000kB
-
描述
-
小吉是银行的会计师,在处理银行帐目的时候,遇到了一些问题。有一系列整数,其中含有重复的整数,需要去掉重复后,排序输出,你能帮助小吉解决问题吗?
输入
-
输入数据共2行,第一行输入测试数据个数n,第二行输入这n个整数,整数之间可能有重复,整数之间可能有若干个空格。
n <= 10 5,所有的整数不超过10 4。
输出
- 输出为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;
}