快速排序

本文详细介绍了由Hoare提出的快速排序算法,通过使用升序排列的例子,解释了如何选取基准值(key),并利用双指针技巧将序列划分为两部分,最终通过递归实现整个数列的有序排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序是Hoare (霍尔)提出的,我好纳闷,怎么每一个中国人提出的排序算法。嘿嘿这只是题外话了 。(努力^_^)


{以升序为例}

思路的描述,现在描述不来,就用自己的话闲扯点吧。数列是无序的。假使第一个元素 作为比较的对象,就叫做key 吧。


设两个指针分别指向首和尾。描述了一大堆然后又删除了,好似说不清楚。实在抱歉,先码上代码。




int hoare(int a[] ,int low ,int high)

{

int l = low ;

int h = high ;

int key ;

do

 {

while(a[h]>=key && h>l) h--;

if(h>l){ a[l]=a[h];l++;}

while(a[l]<=key && h>l) l++;

if(h>l) {a[h]=a[l];h--}

}while(h>l);

a[l] = key ;

return l;

}

void quicksort(int a[],int low ,int high)

{

int key_index ;

if(low<high)

  {

key_index = hoare(a,low,high);

quicksort(a,low,key_index-1);//递归左边部分

quicksort(a,key_index+1,high);//递归右边部分

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值