• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Golang算法问题之数组按指定规则排序的方法分析

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了golang算法,golang 数组,golang 遍历数组,golang 数组长度,golang 数组初始化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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

代码实现:
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
}</div>

希望本文所述对大家Go语言程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • Golang算法问题之整数拆分实现方法分析
  • Golang算法问题之数组按指定规则排序的方法分析
  • Golang算法之田忌赛马问题实现方法分析
  • Golang排列组合算法问题之全排列实现方法
  • Golang正整数指定规则排序算法问题分析
  • Golang最大递减数算法问题分析

相关文章

  • 浅谈Go语言中字符串和数组
  • Go语言接口用法实例
  • GO语言实现列出目录和遍历目录的方法
  • Go语言使用组合的方式实现多继承的方法
  • golang使用sort接口实现排序示例
  • 简单讲解Go程序中使用MySQL的方法
  • 深入理解GO语言的面向对象
  • go的websocket实现原理与用法详解
  • go语言读取json并下载高清妹子图片
  • Go语言实现字符串切片赋值的方法小结

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • GO语言中的常量
    • go语言按显示长度截取字符串的方法
    • Go语言中普通函数与方法的区别分析
    • 在Mac OS上安装Go语言编译器的方法
    • Golang极简入门教程(一):基本概念
    • Go语言并发技术详解
    • go语言工程结构
    • ubuntu下搭建Go语言(golang)环境
    • go语言制作端口扫描器
    • Go语言实现的树形结构数据比较算法实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有