任何疑问、意见、建议请留言公众号:一航代码
题目描述:
输入一组数据的个数,然后输入这组数据,排序后输出结果。要求使用快速排序。
输入格式:
首先输入数组元素的个数N,然后在接下来的一行里输入数组元素的值,并以空格隔开。
输出格式:
输出排序后数组的值。
输入样例:
1030
输出样例:
10000000110
解决方法:
(1)代码实现:
#include <iostream>
#include <vector>
using namespace std;
void quicksort(vector<int>& v, int low, int high)
{
if (low < high) {
int i = low, j = high, pivot = v[low];
while (i < j) {
while (i < j && v[j] >= pivot) {//while中须判断i<j
--j;
}
if (i < j) { //此处if不可缺少
v[i++] = v[j];
}
while (i < j && v[i] <= pivot) {//while中须判断i<j
++i;
}
if (i < j) { //此处if不可缺少
v[j--] = v[i];
}
}
v[i] = pivot;
quicksort(v, low, i - 1);
quicksort(v, i + 1, high);
}
}
int main()
{
int n;
cin >> n;
vector<int> v(n, 0);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
quicksort(v, 0, n - 1);
cout << v[0];
for (int i = 1; i < n; i++) {
cout << " " << v[i];
}
return 0;
}