#include<iostream>
void swap( int &a, int &b );
void qSort( int array[], int left, int right );
/**
快速排序
**/
int main() {
int array[] = {10,5,20,25};
qSort(array,0,3);
for( int i=0; i<4; i++ )
std::cout<<array[i]<<std::endl;
return 0;
}
int partition( int array[], int left, int right) {
int pivot = array[right];
while(left != right) {
while( array[left] < pivot && left < right) //从左边找到第一个大于pivot的数
left++;
if(left < right)
swap( array[left], array[right--] );
while( array[right] > pivot && left < right ) //从右边找到第一个小于pivot的数
right--;
if( left < right )
swap( array[left++], array[right] );
}
return left;
}
void swap( int &a, int &b ) {
int c;
c = a;
a = b;
b = c;
}
void qSort( int array[], int left, int right ) {
if( left >= right )
return;
int index = partition( array, left, right );
qSort( array, left, index -1 );
qSort( array, index + 1, right );
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布