快速排序的记忆方法

明天就考863了,这次考研就当“一模”了敲打……


快排就记住两个“截止”的条件

1。循环截止条件:当low指针==high指针

2。算法截止条件:当所有划分都变为单个(一次划分决定一个哨兵的位置)时

划分目的:low指针指过的地方都比哨兵R0小,high指针之国的地方都比R0大


更容易的每次划分记忆过程:(这只是算法执行过程其中的一部分,并没结束)


以上,“空”的写法是个人为了大家理解加上的,实际过程中其实只是不处理,重复的一个废数而已(碍眼还有碍理解)


其实这么多话,这么多解释只不过是把代码的目的说出来而已,毕竟这才是我们人所能理解的过程嘛~(不理解的记不清楚,我们又不是执行命令的机器,需要知道每步的意图以及“为什么这么做”)


附上代码,以及标出我所说明的部分

#include <iostream> 
using  namespace  std; 
void  Qsort( int  a[],  int  low,  int  high)【"一次划分过程"】
{
     if (low >= high)直至元素“本尊归位”
     {
         return ;
     }
     int  first = low;
     int  last = high;
     int   key = a[first]; /*用字表的第一个记录作为枢轴*/ 【key就是我说的R0】
 
     while (first < last)
     { 自右始,H换一次L换一次循环至L=H
         while (first < last && a[last] >= key) 【若H又(没跳出循环)交换过了L开始往右找不符合
         {
             --last;
         }
 
         a[first] = a[last]; /*将比第一个小的移到低端*/ 【这就是“H交换”的代码,其上部分为遍历比较】
 
         while (first < last && a[first] <= key)L交换过了,H开始往左找不符合
         {
             ++first;
         }
         
         a[last] = a[first];   /*将比第一个大的移到高端*/【这就是“L交换”的代码,其上部分为遍历比较】
     }
     a[first] = key; /*枢轴记录到位*/【L==H,将R02赋值到LH的位置
     Qsort(a, low, first-1); 【例子里的{1},再次划分】
     Qsort(a, first+1, high); 【例子里的{6,5,3}再次划分】
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超自然祈祷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值