全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

代码实现:
复制代码 代码如下: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语言程序设计有所帮助。


# Golang  # 算法  # 数组  # 按指定规则  # 排序  # Golang实现拓扑排序(DFS算法版)  # JS中数据结构与算法---排序算法(Sort Algorithm)实例详解  # Go语言展现快速排序算法全过程的思路及代码示例  # 深入解析快速排序算法的原理及其Go语言版实现  # go语言睡眠排序算法实例分析  # golang双指针快速排序的实现代码  # 以此类推  # 给大家  # 请将  # 所述  # 则对  # 按原  # 样例  # 讲述了  # nbsp  # fmt  # import  # package  # huawei  # sort  # int  # firstIndex  # nums  # func  # Test09Base  # true 


相关文章: 制作网站外包平台,自动化接单网站有哪些?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何确保西部建站助手FTP传输的安全性?  网站制作新手教程,新手建设一个网站需要注意些什么?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何选择PHP开源工具快速搭建网站?  简单实现Android文件上传  制作网站怎么制作,*游戏网站怎么搭建?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  太原网站制作公司有哪些,网约车营运证查询官网?  如何解决ASP生成WAP建站中文乱码问题?  如何选择域名并搭建高效网站?  如何快速重置建站主机并恢复默认配置?  建站主机解析:虚拟主机配置与服务器选择指南  阿里云网站制作公司,阿里云快速搭建网站好用吗?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  高防服务器租用指南:配置选择与快速部署攻略  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何快速生成高效建站系统源代码?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  如何基于云服务器快速搭建个人网站?  如何注册花生壳免费域名并搭建个人网站?  建站之星导航配置指南:自助建站与SEO优化全解析  浅谈Javascript中的Label语句  建站之星代理如何获取技术支持?  ,石家庄四十八中学官网?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  家庭服务器如何搭建个人网站?  黑客如何通过漏洞一步步攻陷网站服务器?  已有域名能否直接搭建网站?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  网站制作员失业,怎样查看自己网站的注册者?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  宝塔Windows建站如何避免显示默认IIS页面?  如何快速查询网站的真实建站时间?  建站主机如何安装配置?新手必看操作指南  完全自定义免费建站平台:主题模板在线生成一站式服务  浅析上传头像示例及其注意事项  简历在线制作网站免费版,如何创建个人简历?  建站之星在线客服如何快速接入解答?  Android滚轮选择时间控件使用详解  如何在橙子建站上传落地页?操作指南详解  建站之星如何一键生成手机站?  网站制作报价单模板图片,小松挖机官方网站报价?  深入理解Android中的xmlns:tools属性 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。