快速排序问题,以6,8,7,9,0,1,3,2,4,5为例,第一趟为什么不是5,4,2,3,1,0,6,9,7,8?

快速排序问题,以6,8,7,9,0,1,3,2,4,5为例,第一趟为什么不是5,4,2,3,1,0,6,9,7,8?,第1张

第一趟应该是 5,4,2,3,0,1,6,9,7,8 每次找一个数,使得这个数左边的都比它小,右边的都比它大,一般选择第一个数作为初始数,你这样扫描一边,在纸上写一下,就明白了,下面的例子第一趟应该是:40,38,46,56,79,84

数据结构上有明显的解释:515268769
要借助一个额外空间;
从最后一个向前搜索小于6的记录的5,1,5,7,8,2, ,6,9
然后从前搜索大于6的记录5,1,5, ,8,2,7,6,9
再从刚才位置从后向前搜索小于6的记录的5,1,5,2,8, ,7,6,9
然后再从刚才位置从前向后搜索大于6的记录5,1,5,2, ,8,7,6,9
最后把6放到空位置,一次排序就完成了
空位置其实空哪的值存在,为了便于你理解省了(那个值为你移动的那个值)

快速排序 第一趟过程:
19123716534928
19122816534937
19121628534937

所以 第一趟结果是:19121628534937
希尔排序第一趟结果
16123719534928


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/10510460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存