Coder

舒心、快乐,比什么都重要

1045 快速排序 (25 分)

// 思路就是用一维数组输入的同时将数据存到向量中,然后对其进行排序,下一步再将数组与向量的数字进行一一匹配,匹配到的一样的次数就是主元的数量,不匹配的特殊标记,最后通过小技巧输出行末不得有空格的情况,最后的那个换行不能忘,不然过不了。
#include <iostream> #include <vector> #include <algorithm> using namespace std; const int maxn = 20; int arr[1 << maxn]; int main() { int n, cnt = 0, max = 0, flag = 0; vector <int> num; cin >> n; for (int i = 0; i < n; i++) { cin >> arr[i]; num.push_back(arr[i]); } sort(num.begin(), num.end()); for (int i = 0; i < n; i++) { if (arr[i] == num[i] && arr[i] > max) cnt++; else num[i] = -1; if (arr[i] > max) max = arr[i]; } cout << cnt << endl; for (int i = 0; i < n; i++) { if (num[i] > 0) { if (flag == 1) cout << ' '; cout << num[i]; flag = 1; } }
cout << endl;
return 0; }

 

posted @ 2019-04-23 22:02  H123K  阅读(128)  评论(0编辑  收藏  举报