/**
* @brief Quick Sort
* @author An
* @data 2013.5.17
**/
#include <time.h>
#include <stdlib.h>
#include <iostream>
#define random( a, b ) ( rand() % ( b - a + 1 ) + a )
#define random_( a, b ) ( ( (double)rand() / RAND_MAX ) * ( b - a ) + a )
using namespace std;
int Partition( int *array, int low, int high )
{
int pivot = array[ high ];
int i = low - 1;
for ( int j = low; j < high; ++j )
{
if ( array[ j ] <= pivot )
{
++i;
int tmp = array[ j ];
array[ j ] = array[ i ];
array[ i ] = tmp;
}
}
++i;
array[ high ] = array[ i ];
array[ i ] = pivot;
return i;
}
int RandomizedPartition( int *array, int low, int high )
{
srand( (int)time(0) );
int num = random( low, high );
int tmp = array[high];
array[high] = array[num];
array[num] = tmp;
return Partition( array, low, high );
}
void QuickSort( int *array, int low, int high )
{
if ( low < high )
{
int mid = Partition( array, low, high );
QuickSort( array, low, mid - 1 );
QuickSort( array, mid + 1, high );
}
}
void RandomizedQuickSort( int *array, int low, int high )
{
if ( low < high )
{
int mid = RandomizedPartition( array, low, high );
RandomizedQuickSort( array, low, mid - 1 );
RandomizedQuickSort( array, mid + 1, high );
}
}快速排序和随机化快速排序(算法导论第七章)
最新推荐文章于 2025-08-06 19:53:58 发布
本文深入探讨了快速排序算法的原理、优化方法,并通过C++代码实例详细展示了其实现过程,包括分区函数、随机化分区函数及递归排序过程。
320

被折叠的 条评论
为什么被折叠?



