OpenJudge百炼习题解答(C++)--题4085:数组去重排序
2016-02-22 20:23
323 查看
题:
总时间限制: 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; }
相关文章推荐
- 怎么样才算是精通 C++?
- 怎么样才算是精通 C++?
- C++ primer阅读笔记之标准库String类型学习
- c++ vector的用法
- C++11和Boost库
- C++11和Boost库
- c++中换行\n和endl的区别
- C语言学习-vs2013编译器问题
- C++ vector.data()
- c++ 排序算法总结
- c++ 排序算法总结
- C++ primer阅读笔记之标准库vector类型学习
- c++模板类(一)理解编译器的编译模板过程
- 探寻C++最快的读取文件的方案 ——C++ IO优化
- 探寻C++最快的读取文件的方案 ——C++ IO优化
- C语言ini形式配置文件解析库——iniparser
- c++应用程序文件的编译过程
- C++学习模板篇(静态数据成员与静态成员函数)
- C语言-12-日期和时间处理标准库详细解析及示例
- neuq oj 1056: 谭浩强C语言(第三版)习题7.1 C++