下面时快速排序的过程:
把图看懂,下面程序打一遍你就会如何编写快速排序了
#include<iostream>
#include<stdio.h>
using namespace std;
int a[101],n;
void quicksort(int left,int right){
int i,j,temp,t;
if(left>right)
return;
temp = a[left];//temp中存的就是基准数
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(i+1,right);//继续处理左边的,如果是一个递归的过程
quicksort(left,i-1);//继续处理右边,这里是一个递归的过程
return;
}
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;
}
有什么不懂可以在评论区问我,我会及时回答的,感谢阅读,希望能帮到您!