本文实例讲述了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小时内与您取得联系。