<p>输入:</p><p>10</p><p>6 1 2 7 9 3 4 5 10 8</p><p>输出</p><p>1 2 3 4 5 6 7 8 9 10</p><p>代码如下:</p>
<pre name="code" class="cpp">#include<stdio.h>
int a[101],n;
void quicksort(int left, int right){
int i,j,t,temp;
if(left > right)
return;
temp = a[left];
i = left;
j = right;
while(i !=j){
while(a[j] >= temp && i < j)
j --;
while(a[i] <= temp && i < j)
i ++;
//交换
if(i < j){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//最终将基数归位
a[left] = a[i];
a[i] = temp;
//递归
quicksort(left, i-1);
quicksort(i+1, right);
}
int main(){
int i, j;
//读入数据
scanf("%d", &n);
for(i=1; i <= n; i++)
scanf("%d", &a[i]);
quicksort(1, n);
//输出排序后的结果
for(i=1; i <=n ; i++){
printf("%d ", a[i]);
}
getchar();
getchar();
return 0;
}
注意:顺序很重要,一定要从右往左找