一、单向扫描法:
#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