题目描述 Description
给出n和n个整数,希望你从小到大给他们排序
输入描述 Input Description
第一行一个正整数n
第二行n个用空格隔开的整数
输出描述 Output Description
输出仅一行,从小到大输出n个用空格隔开的整数
样例输入 Sample Input
3
3 1 2
样例输出 Sample Output
1 2 3
数据范围及提示 Data Size & Hint
1<=n<=100000
#include <iostream>
using namespace std;void quickSort(int *a, int low, int high)
{
int i=low,j=high;
int temp = a[low];
while(i<j)
{
while(i<j&&a[j]>=temp)
{
j--;
}
if(i<j) a[i++] = a[j];
while(i<j&&a[i]<temp)
{
i++;
}
if(i<j) a[j--] = a[i];
}
a[i]=temp;
if(low<i)
quickSort(a, low, i-1);
if(i<high)
quickSort(a, i+1, high);
}
int main()
{
int n,a[100000],i;
cin >> n;
for(i=0; i<n; i++)
{
cin >> a[i];
}
quickSort(a, 0, n-1);
for(i=0; i<n; i++)
{
cout << a[i]<< " ";
}
return 0;
}
写完这些有点久了,ac可以通过,代码有些地方改过,所以可能会出现一些注释或者一些多余的参数,大家可以无视,这个排序应该除了shell,快排,归并应该也可以,主要是注意时间,冒泡和插入貌似时间会超。