问题描述
小明来到一个景区游玩,但是他的时间有限,没办法逛遍所有的景点,所以他从网上下载了每个景点的评分,他希望能够使游览的景点的评分总和最高,于是他希望你帮他对于N个景点排下序。
输入格式
输入的第一行包含一个正整数N,表示N个景点。
第二行有N个正整数,表示每个景点的评分值。
输出格式
输出一行,包含N个正整数,表示N个景点的评分从大到小的排列
样例输入
4
3 2 4 1
样例输出
4 3 2 1
数据规模和约定
N<=1000,每个景点的评分<=10000。
思路:快排
#include<iostream>
using namespace std;
int arr[100000];
void quicksort(int left, int right)
{
int i, j, t, temp;
temp = arr[left];
i = left;
j = right;
if (left > right)
{
return;
}
while (i != j)
{
while (i<j&&temp>=arr[j])
{
j--;
}
while (i < j && temp <= arr[i])
{
i++;
}
if (i < j)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[left] = arr[i];
arr[i] = temp;
quicksort(left, i - 1);
quicksort(i + 1, right);
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
quicksort(0, n - 1);
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
return 0;
}