// 快速排序法 (划分,分治)-> (比较,交换)

 //*************************************
 // 快速排序法 (划分,分治)-> (比较,交换)
 // 思路: 分治思想,需要递归调用, 请查看《数据结构》 或者《计算机软件技术基础教程》或者《数据结构c语言描述》
 // 调用: QuickSort(A,0,n-1);
 
Status QuickSort(ElemType A[], NumType low, NumType high)
{
NumType Partion(ElemType A[],NumType low, NumType high);//函数声明
NumType middle;
if(low<high) // 继续嵌套递归的条件low=high
{
middle=Partion(A,low,high);
//if(middle!=0)//这个条件真的太重要了,bug挑了一个小时才发现,处理有序序列,会middle=0,则导致middle-1溢出。
if(middle!=low) // 分组已经有序,卡到边界了。
{
QuickSort(A,low,middle-1); // 递归处理 左区间 如果middle 返回了0,则出现了比较严重的问题了。middle-1=ffffff..
}
if(middle!=high)//这个条件也很重,如果middle=high ,则函数递归进去后,遇到if(low<high) 不满足条件,执行else分支,空操作后返回。
QuickSort(A,middle+1,high);// 递归处理 右区间

 }
 else
 {
 // 递归结束,空操作。 说明一下:每次递归处理的结果都留在了数组A里面了。
 }
 return OK;
 }
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值