源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Golang算法问题之数组按指定规则排序的方法分析

  • 时间:2020-07-11 08:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Golang算法问题之数组按指定规则排序的方法分析
本文实例讲述了Golang算法问题之数组按指定规则排序的方法。分享给大家供大家参考,具体如下: 给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序, 如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列。如果第i列到最后一列都相同,则按原序排列。 样例输入: 1,2,3 2,3,4 2,3,1 1,3,1 按第2列排序,输出: 1,2,3 2,3,1 1,3,1 2,3,4 代码实现:
[u]复制代码[/u] 代码如下:
package huawei import (     "fmt"     "sort" ) func Test09Base() {     nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}}     firstIndex := 2 //按第二列排序     result := arraySort(nums, firstIndex-1)     fmt.Println(result) } //按指定规则对nums进行排序(注:此firstIndex从0开始) func arraySort(nums [][]int, firstIndex int) [][]int {     //检查     if len(nums) <= 1 {         return nums     }     if firstIndex < 0 || firstIndex > len(nums[0])-1 {         fmt.Println("Warning: Param firstIndex should between 0 and len(nums)-1. The original array is returned.")         return nums     }     //排序     mIntArray := &IntArray{nums, firstIndex}     sort.Sort(mIntArray)     return mIntArray.mArr } type IntArray struct {     mArr       [][]int     firstIndex int } //IntArray实现sort.Interface接口 func (arr *IntArray) Len() int {     return len(arr.mArr) } func (arr *IntArray) Swap(i, j int) {     arr.mArr[i], arr.mArr[j] = arr.mArr[j], arr.mArr[i] } func (arr *IntArray) Less(i, j int) bool {     arr1 := arr.mArr[i]     arr2 := arr.mArr[j]     for index := arr.firstIndex; index < len(arr1); index++ {         if arr1[index] < arr2[index] {             return true         } else if arr1[index] > arr2[index] {             return false         }     }     return i < j }
希望本文所述对大家Go语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部