快速排序
总提交:646 测试通过:296
描述
给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中快速排序算法进行排序,并输出排序最后结果的相应序列。
输入
共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)
输出
一行,输出排序结果。
样例输入
7
48 36 68 72 12 48 2
样例输出
2 12 36 48 48 68 72
提示
数据结构A实验四
题目来源
CHENZ
分析:快排之——3Do 记的不够熟 right+1 !!!
#include<stdio.h>
#define SWAP(x, y) {int tmp=x; x=y; y=tmp;}
//快速排序
int a[100000];
void quicksort(int a[], int left, int right)
{
if(left < right)
{
int i = left, j = right+1;
do
{
do i++; while(a[i] < a[left]);
do j--; while(a[j] > a[left]);
if(i < j) SWAP(a[i], a[j]);
}while(i < j);
SWAP(a[left], a[j]);
quicksort(a, left, j-1);
quicksort(a, j+1, right);
}
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
quicksort(a, 0, n-1);
for(int i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
return 0;
}
1万+



被折叠的 条评论
为什么被折叠?



