一、单向扫描法:

#include<stdio.h>
#include<iostream>
using namespace std;
void quickSort(int arr[],int p,int r){
int partition(int arr[],int p,int r);
if(p<r){
int q=partition(arr,p,r);
quickSort(arr,p,q-1);
quickSort(arr,q+1,r);
}
}
void swap(int arr[],int begin,int end){
int temp=arr[begin];
arr[begin]=arr[end];
arr[end]=temp;
}
int partition(int arr[],int p,int r){
int priority=arr[p];
int sp=p+1;
int bigger=r;
while(sp<=bigger){
if(arr[sp]<=priority){
sp++;
} else {
swap(arr,sp,bigger);
bigger--;
}
}
swap(arr,p,bigger);
return bigger;
}
int main(){
int arr[1000]={
32,12,3,21312,31,32,3,3,3,2,3,3,323,13,
3,3,13,2,312,3234,23423,434,4,3,424,2,2,1,31,3,31,4,2,2,3,2
,34,34,324,5,56,543,3};
int index=0;
while(arr[index]!=0){
index++;
}
quickSort(arr,0,index-1);
for(int i=0;i<ind

这篇博客详细介绍了快速排序的三种实现方法:单向扫描法、双向扫描法和三分法,是理解快速排序算法的重要参考资料。
最低0.47元/天 解锁文章
1428

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



