我想在 golang 中對二維陣列進行排序,例如:
{40, 100, 20},
{30, 100},
{40, 10},
{30, 100, 80},
{30, 60},
{30, 80},
{100, 20},
{10, 80},
{50, 30},
我提到了這個去游樂場的例子。在上述情況下它作業正常,但如果我改變陣列的順序如下:
{40, 100, 20},
{40, 10},
{30, 100},
{30, 100, 80},
{30, 60},
{30, 80},
{100, 20},
{10, 80},
{50, 30},
它有時會給出如下錯誤:
panic: runtime error: index out of range [2] with length 2
關于可能出了什么問題的任何建議,為什么它在某些情況下有效而在其他情況下無效?
謝謝!
uj5u.com熱心網友回復:
您提供的代碼僅適用于固定長度陣列。錯誤來自程式需要將 3 元素陣列與 2 元素陣列進行比較的地方,因為它無法訪問第二個陣列的第三個元素。這適用于第一種情況,因為比較順序,不會有任何情況下有 3 到 2 比較,只有 2 到 3,這是可以做到的,但在這種情況下,第二個陣列的第三個元素不會被考慮在內。
您必須修改代碼以僅回圈兩個陣列的最小元素數:
for x := 0; x < int(math.Min(float64(len(matrix[i])), float64(len(matrix[j])))); x {
if matrix[i][x] == matrix[j][x] {
continue
}
return matrix[i][x] < matrix[j][x]
}
但在這種情況下,當任何可比較的陣列中有更多元素時,它不會被處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471912.html
