快速排序

hrenlo · · 4716 次点击
自己跟踪了一下,i和j循环变量怎么不会变啊?
#1
更多评论
polaris
社区,需要你我一同完善!
跟踪一下就知道为啥了。 另外,你的算法写的不对。 func QuickSort(slice_arg []int, iLeft int, iRight int) { if iLeft < iRight { var iTmpVal = slice_arg[iLeft] var i, j = iLeft, iRight for i < j { fmt.Println("i,j = ", i, j) for i < j && slice_arg[j] > iTmpVal { j-- } if i < j { slice_arg[i] = slice_arg[j] i++ } for i < j && slice_arg[i] < iTmpVal { i++ } if i < j { slice_arg[j] = slice_arg[i] j-- } } slice_arg[i] = iTmpVal QuickSort(slice_arg, iLeft, i-1) QuickSort(slice_arg, j+1, iRight) } }
#2
我感觉算法是一样的啊,只是你选的是最左边的值,我选的是中间的值啊?
#3