首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Go 語言實現多鍵值排序:按指定列優先級排序二維切片

     編輯:關於C++

問題描述

給定二維整數切片,按第 i 列(1-based)升序排序;若該列值相同,按第 i+1 列排序,以此類推至最後一列;若所有列均相同,保持原相對順序(穩定排序)。

Go 實現要點

實現 sort.Interface 三個方法:Len(), Less(i,j), Swap(i,j)。在 Less 中從指定列開始依次比較,直到分出大小或耗盡所有列。

完整代碼

 b[c] { return false }
    }
    return i < j // 完全相等時保持原序(穩定性)
}
func main() {
    data := [][]int{{1,2,3}, {2,3,4}, {2,3,1}, {1,3,1}}
    // 按第 2 列排序(1-based → startCol=1)
    sort.Sort(RowSlice{data, 1})
    fmt.Println(data)
    // 輸出:[[1 2 3] [2 3 1] [1 3 1] [2 3 4]]
}

運行結果解析

原始行第2列第3列說明
[1,2,3]23第2列最小,排首位
[2,3,1]31第2列=3,第3列=1 最小
[1,3,1]31同前,原序在前
[2,3,4]34第3列最大,排最後

擴展建議

  • 泛型化(Go 1.18+)支援任意可比較類型
  • 增加降序選項
  • 處理不規則矩陣(各行長度不同)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved