描述
输入n个整数,对它们进行排序,从大到小输出。0<n<=100。注意,不应使用别人写的库函数。
输入
两行,第1行为元素个数n;第2行为n个整数,用空格隔开。
输出
n个排好序的整数,从大到小用一个空格隔开,末尾无空格。
输入输出示例
输入 | 输出 | |
示例 1 | | |
#include <iostream>
using namespace std;
void swap(int &a, int &b);
void quickSort(int a[], int left, int right);
int main() {
int a[100];
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
quickSort(a, 0, n - 1);
cout << a[0];
for (int i = 1; i < n; i++)
cout << " " << a[i];
cout << endl;
return 0;
}
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void quickSort(int a[], int left, int right) { //快速排序
int i = left, j = right;
int pivot = a[(i + j) / 2];
while (i <= j) {
while (a[i] > pivot)
i++;//找到左边比基准值小的元素
while (a[j] < pivot)
j--;//找到右边比基准值大的元素
if (i <= j) { //如果位于基准值两边时就交换
swap(a[i], a[j]);
i++;
j--;
}
}
if (j > left)
quickSort(a, left, j); //对左边递归进行
if (i < right)
quickSort(a, i, right); //对右边递归进行
}