快速排序

hrenlo · 2013-07-24 02:45:29 · 5034 次点击

自己跟踪了一下,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