不知道我这个代码怎么会进入死循环 财富值21

2016-11-04 21:05发布

我在用golang写一个快排的时候,写到下面的切分的部分,出现了一个奇怪的BUG,直接运行会死循环,代码如下

    func partition(a []int, lo int, hi int) int {     i, j := lo, hi+1     v := a[lo]     for {         for i++;a[i-1] < v ;{  //DEBUG时候程序会在这里down掉,down掉的时候i=3,很奇怪。             if i == hi {                 break             }         }         for j--;v < a[j+1];{             if j == lo {                 break             }         }         if i >= j {             break         }         a[i], a[j] = a[j], a[i]     }     a[lo], a[j] = a[j], a[lo]     return j }  func main() {     data := []int{12, 26, 13, 4, 45, 26, 17,58,92,0,11,23,13}     s:=partition(data,1,11)     fmt.Println(s) } 

很奇怪的,请各位大大看看是怎么回事,感觉不应该会死循环啊

友情提示: 问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
0条回答

一周热门 更多>