#include<iostream>
using namespace std;
#include<stdlib.h>
#include<time.h>
#include<exception>
int RandInRange(int start, int end){
return start + rand()%(end - start + 1);
}
void Swap(int* a, int* b ){
int t = *a;
*a = *b;
*b = t;
}
int Partition(int data[], int length, int start, int end){
if( data == NULL || length < 0 || start < 0 || end >= length){
logic_error ex("Invail Parameters");
throw exception(ex);
}
int index = RandInRange(start, end);
Swap(&data[index], &data[end]);
int small = start - 1;
for(index = start; index <= end ; index++){
if(data[index] < data[end]){
small++;
if(small != index){
Swap(&data[small],&data[index]);
}
}
}
small++;
Swap(&data[small], &data[end]);
return small;
}
void MyQuickSort(int data[], int length, int start, int end){
if(start == end)
return;
int index = Partition(data, length , start, end);
if(index > start)
MyQuickSort(data, length, start, index-1);
if(index < end)
MyQuickSort(data, length, index+1, end);
}
int main(){
srand((int)time(0));
// for(int i = 0; i < 10; i++){
// int t = RandInRange(0,5);
// cout<<t<<endl;
// }
int a[] = {2,3,40,44,23,122,32,99,56};
MyQuickSort(a, 9 , 0 , 8);
for(int i = 0; i<9 ; i++){
cout<<a[i]<<endl;
}
return 1;
}
QuickSort
最新推荐文章于 2024-01-06 21:04:09 发布