首页
注册
登录
deagleWSJ 最近的时间轴更新
deagleWSJ
V2EX 第 498850 号会员,加入于 2020-07-13 03:47:04 +08:00
deagleWSJ
提问
技术话题
好玩
工作信息
交易信息
城市相关
deagleWSJ 最近回复了
316 天前
回复了
samhjn
创建的主题
›
程序员
›
考考大家,华为云公众号里展示的这个快排程序哪里错了
@
billccn
交换 arr[i], arr[j]后下一次循环会进入 while(arr[i] < pivot) i++。真正的问题对于含有重复元素的数组排序,当 arr[i]和 arr[j]都等于 pivot 时会死循环。
316 天前
回复了
samhjn
创建的主题
›
程序员
›
考考大家,华为云公众号里展示的这个快排程序哪里错了
1. 当数组存在重复元素时,可能会导致死循环。修改:i++和 j--循环条件判断改为<=
2. i 初始从 left 开始,且 pivot=arr[left],会导致每次循环 i 和 j 总会有一个不动,pivot 值在 i 和 j 间换来换去。修改:i 从 left+1 开始,最后把 pivot 换到中间。
3. pivot 直接取 left 值,对于接近倒序的的数组性能较差。修改:left~right 间的随机位置作为 pivot ,并换到 left
»
deagleWSJ 创建的更多回复
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
2566 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms ·
UTC 02:41
·
PVG 10:41
·
LAX 18:41
·
JFK 21:41
Developed with
CodeLauncher
♥ Do have faith in what you're doing.