快速排序的关键点

分区策略

寻找基准位置前的区域进行划分

寻找基准位置后的区域进行划分

这里有一个停止条件就是,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值