快排 quicksort

来源:互联网 发布:网站域名多少钱 编辑:程序博客网 时间:2024/04/29 01:48
#include <iostream>#include <math.h>#include <algorithm>int randBetween( int low, int high ) {//int direction = (rand()%2 == 0) ? -1:1;return ((rand() % (high - low)) + low);}void exchange( int &elem1, int &elem2 ){int temp = elem1;elem1 = elem2;elem2 = temp;}int Partition( int* A, int p, int r ){int x = A[r];int i = p-1;for( int j = p; j <= r-1; j++ ){if( A[j] <= x ){i++;exchange( A[i], A[j] );}}exchange( A[i+1], A[r] );return i+1;}int Randomized_Partition( int* A, int p, int r ){int i = randBetween( p, r );exchange( A[r], A[i] );return Partition( A, p, r );}void Quick_Sort( int* A, int p, int r ){if( p < r ){int q = Randomized_Partition( A, p, r );Quick_Sort( A, p, q-1 );Quick_Sort( A, q+1, r );}}void print( int *A, int n ){for( int i = 0; i < n; i++ ){std::cout << A[i] << " ";}std::cout << std::endl;}int main( int argc, char* argv[] ){int length;std::cout << " input the length of the array: ";std::cin >> length;int *A;A = new int[length];for( int i = 0; i < length; i++ ){std::cin >> A[i];}Quick_Sort( A, 0, length-1 );print( A, length );return 0;}


0 0
原创粉丝点击