C语言关键码序列 66 13 51 76 81 26 57 69 23 谁能给我解释一下答案,见详细,尤其是66怎么跑的 100

若采用快速排序法并以第一个元素为划分基准那么第一趟划分结果为第一趟:基准指针与low指针一致,所以和high指针的值进行比较,不满足要求,所以low和high值互换,基准... 若采用快速排序法
并以第一个 元素为划分基准 那么 第一趟划分结果为第一趟:基准指针与low指针一致,所以和high指针的值进行比较,不满足要求,所以low和high值互换,基准指针指向high,low的值就定了,low就往后面移动一个.
以后同上,直到low=high.
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

搜了答案还是不理解。。。

66和23比较66>23所以交换变成
23,13,51,76,81,26,57,69,66
13和66比较不交换
51和66比较不交换
76和66比较交换
23,13,51,66,81,26,57,69,76
69和66比较不交换
从这步开始,66怎么就和69比较了?
57和66比较交换
23,13,51,57,81,26,66,69,76
81和66比较交换
23,13,51,57,66,26,87,69,76
26和66比较交换
23,13,51,57,26,66,87,69,76
展开
 我来答
匿名用户
2017-03-20
展开全部
快排实现的方式有很多种,上面这种实现方式是:
1.起止指针 low high,基准指针index 一开始指向最后一位元素.
2.先左边 low一直往右移,直到找到一个比index大的元素,low index交换.
3.high 左移,直到找到一个比index小的元素, high index 交换.
4.重复 2 3步 直到low = high.
宿雨厌厌
2017-03-20 · TA获得超过315个赞
知道小有建树答主
回答量:226
采纳率:66%
帮助的人:137万
展开全部
为什么不去百度百科去看一下“快速排序算法”,看完你就明白了
追问
看完也没明白
追答

有三个指针,一个是指向 low,一个指向 high,一个指向基准,low 指针是从首元素开始,high 指针是从末元素开始的,基准指针一定指向 KEY;

循环的目的是: KEY 前面的元素小于KEY,后面的元素大于KEY;

下标从0开始,元素为 num[0]。

具体过程如下:

  1. 最开始,序列 66 13 51 76 81 26 57 69 23,low指针指向num[0] = 66,high 指针指向num[8] = 23,KEY = 首元素66;

  2. high 指针移动方向是从后到前,直到找到比 KEY 小的值才停止,交换指向的元素与 KEY 。high 指向num[8] = 23,比 66小,交换元素,序列成为:

    23 13 51 76 81 26 57 69 66 

  3. low 指针移动方向是从前到后,直到找到比 KEY 大的值才停止。low 指向num[0] = 23,比66小,low 指针继续移动,num[1] = 13,小于66,继续移动,num[2] = 51,小于66,继续移动,num[3] = 76,大于66,停止移动,交换num[4]  与 KEY ,序列成为:

    23 13 51 66 81 26 57 69 76

  4. 重复过程2,high 指向 num[8],但是你会发现,末元素 与 KEY 刚才在过程3 交换过,所以必定保证了现有序列中末元素的值大于 KEY ,所以可以跳过这个元素,从它的前一位开始(high--),num[7] = 69,大于66, 继续移动,num[6] = 57,小于66,停止移动,交换num[6] 与 KEY,序列成为:

    23 13 51 57 81 26 66 69 76

  5. 重复过程3,low 指向 num[3],但是你会发现,num[3] 与 KEY 刚才在过程4 交换过,所以必定保证了num[3]  小于 KEY ,所以可以跳过这个元素,从它的后一位开始( low++),num[4] = 81,大于66,停止移动,交换元素,序列成为:

    23 13 51 57 66 26 81 69 76

  6. 重复过程4,跳过 num[6](high--),num[5] = 26,小于66,停止移动,交换元素,序列成为:

    23 13 51 57 26 66 81 69 76

  7. high 和 low 指针指向的下标相同,循环停止。


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式