您的位置:首页 > 其它

快速排序

2016-04-28 19:36 288 查看
#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 );
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: