分区策略
寻找基准位置前的区域进行划分
寻找基准位置后的区域进行划分
这里有一个停止条件就是,low必须小于high
具体分区策略
1. 选择基准。
2. 从高往低找比基准准小的,所以条件是只要比自己大或者等于,就跳过,然后找到之后,进行交换,这里注意前提条件是从高到低,与从低到高都是维持,低<高。
3. 从低往高找比基准大的,所以条件是只要是比自己小或者等于的,就跳过,然后找到之后,进行交换
4. 最后返回low的位置,作为进一步划分的前后端。
#include <iostream>
using namespace std;
#define MAX_ARRAY_SIZE 500
void swap(int *a, int *b)
{
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int *array, int low, int high)
{
int pivot_key;
pivot_key = array[low];
while(low<high)
{
while((low<high)&&(array[high]>=pivot_key)) high--;
swap(&array[low], &array[high]);
while((low<high)&&(array[low]<=pivo