恭喜,你发布的帖子
发布于 2024-06-21 18:41:54
5楼
谢谢楼主分享,学习了!
不过我有个疑问,也不道我理解的对不对:
假设 #DataArray 有 100 个元素,刚好 只有 #DataArray[99] < #DataArray[98] < #DataArray[0],其它 #DataArray[0] ~ #DataArray[97] 都是从小到大排序好了。正确的排序应该是 #DataArray[99] < #DataArray[98] < #DataArray[0] ~ #DataArray[97]。
那么,按照你的程序,当执行到 第 11 行时,#_iLeftCount = 2, #_iRightCount = 97
可是,执行完成第 12 行 到 14 行后,#DataArray[0] 却与 #DataArray[2] 进行了位置交换。这不是打乱已经排好的顺序了吗?
紧接着第 16 到 20 行又对刚才打乱的 原 #DataArray[1] 和 DataArray[2] 进行排序,变得更乱了!
而且,按照分成前后两段进行排序的方法,最终应该怎么也不能把 #DataArray[99] 这个元素排到最左面吧?!
若我的理解是正确的,那么你的 #_LeftCount 不应该是统计数量,而是应该记录最后一个小于 #_iSelectedValve 的位置吧?
请填写推广理由:
分享
只看
楼主