1 #include <iostream> 2 using namespace std; 3 int partion(int data[],int length,int start ,int end) 4 5 { 6 if (data == nullptr || length <= 0 ||end >= length) 7 { 8 return 0; 9 } 10 int small = start -1 ; 11 int index =(start + end) >> 1; 12 swap(data[index],data[end]); 13 for (int index = start ; index < end ; ++index) 14 { 15 if (data[index] < data[end]) 16 { 17 small++; 18 if (small != index) 19 { 20 swap(data[index],data[small]); 21 } 22 } 23 } 24 small++; 25 swap(data[end],data[small]); 26 return small; 27 } 28 int quickSort(int data[],int length,int start ,int end) 29 { 30 if (data == nullptr || length <= 0 ||end >= length) 31 { 32 return 0 ; 33 } 34 if (start == end) 35 { 36 return 0 ; 37 } 38 int index = partion(data,length,start ,end); 39 if (index > start) 40 { 41 quickSort(data,length,start ,--index); 42 } 43 if (index < end ) 44 { 45 quickSort(data,length,++index ,end); 46 } 47 } 48 int main() 49 { 50 int data[] = {2,3,5,1,50,6,4,0,-3,656,21,64,59,-78,62,3}; 51 quickSort(data,sizeof(data)/sizeof(int),0,sizeof(data)/sizeof(int)-1); 52 for (int i =0 ;i < sizeof(data)/sizeof(int) ;++i) 53 { 54 printf("%d ",data[i]); 55 } 56 return 0; 57 }
输出结果为:-78 -3 0 1 2 3 3 4 5 6 21 50 59 62 64 656