A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有一个序列: ( 66,13,51,76,81,26,57,69,23)

以第一个元素为基准,那么第一次的划分后的结果是?

66为基准,比他小的放左边,大的放右边,

那就是:13放66左边,结果:13,66
              51放55的左边,结果是:51,13,66
              76放66的右边,结果是:51,13,66,76.....
23  13  51  57  26  66  81  69  76
先把66用临时变量存储起来,这样66所在的位置便空了出来,然后从右边找,发现23小于66,于是把23放在空出的位置,23原来所在位置空出,然后从左边开始找,找到比66大的数放在空出的位置,以此类推.。。。知道两边找的位置重合 ,最后再把66放回空位,一次划分完成
1)、设置两个变量I、J,排序开始的时候I:=1,J:=N;
   2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];
   3)、从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换;
   4)、从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换;
   5)、重复第3、4步,直到I=J;
23,13,51,76,81,26,57,69,66
23,13,51,66,81,26,57,69,76,
23,13,51,57,81,26,66,69,76,
23,13,51,57,66,26,81,69,76,
23,13,51,57,26,66,81,69,76,
然后再从以23为基准

3 个回复

正序浏览
呵呵,个人理解,仅作参考....
回复 使用道具 举报
哦好的O(∩_∩)O谢谢啊
回复 使用道具 举报
对于快速排序,个人的理解是:
开始时候找一个数为基准,对这组数进行分组,一组较大数,一组较小数(与基准数比较)。
然后再以这个方法对两边数不断递归。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马