Golang正整数指定规则排序算法问题分析
作者:books1958 时间:2023-07-12 09:12:03
本文实例讲述了Golang正整数指定规则排序算法问题。分享给大家供大家参考,具体如下:
给定字符串内有很多正整数,要求对这些正整数进行排序,然后返回排序后指定位置的正整数
排序要求:按照每个正整数的后三位数字组成的整数进行从小到大排序
1)如果不足三位,则按照实际位数组成的整数进行比较
2)如果相等,则按照输入字符串中的原始顺序排序
说明(以下内容考生无须检查,调用者保证):
1) 字符串内正整数之间以单个空格分隔,字符串首尾没有空格
2) 正整数格式为十进制,大小:1~1000000,正整数的数字非零开始
示例:
如字符串内容
1223 22 3232 2016
按照规定排序后
2016 22 1223 3232
查询排序后的第3个数是
1223
代码实现:
package huawei
import (
"errors"
"fmt"
"strconv"
"strings"
)
func Test6Base() {
s := "2115 22 2128 3115 4119 2016 2119"
findIndex := 2
result, err := findString(s, findIndex)
if err == nil {
fmt.Println("result:", result)
} else {
fmt.Println("Error:", err.Error())
}
}
//将resString按照指定规则排序,然后返回索引为findIndex位置的字符串
func findString(resString string, findIndex int) (result int, err error) {
if resString == "" {
return -1, errors.New("Param resString is an empty string.")
}
numsStr := strings.Fields(resString)
if findIndex < 0 || findIndex > len(numsStr)-1 {
return -1, errors.New("Param findIndex is invalid.")
}
numsInt := convertToInt(numsStr)
//冒泡排序(稳定)
var change bool = false
for i := 0; i < len(numsInt)-1; i++ {
change = false
for j := 1; j < len(numsInt)-i; j++ {
if numsInt[j]%1000 < numsInt[j-1]%1000 {
change = true
numsInt[j], numsInt[j-1] = numsInt[j-1], numsInt[j]
}
}
if !change {
break
}
}
fmt.Println(numsInt)
return numsInt[findIndex], nil
}
//将[]string转为[]int
func convertToInt(numsStr []string) []int {
numsInt := make([]int, len(numsStr))
for i, v := range numsStr {
n, err := strconv.Atoi(v)
checkError(err, "string to integer")
numsInt[i] = n
}
return numsInt
}
希望本文所述对大家Go语言程序设计有所帮助。
标签:Golang,排序,算法
0
投稿
猜你喜欢
Windows2003 IIS+PHP+MySQL配置
2007-06-15 15:15:00
MySQL按天分组统计一定时间内的数据实例(没有数据补0)
2024-01-17 07:42:08
oracle表空间扩容详情
2024-01-12 15:31:54
Django Form常用功能及代码示例
2021-11-22 16:45:53
Python中的Unittest基本使用
2022-04-27 15:49:51
Python学习之str重要函数
2022-12-29 05:46:37
学习JavaScript设计模式之中介者模式
2024-04-17 10:07:57
Html中 IFrame的用法及注意点
2023-07-02 05:30:16
SQLServer 优化SQL语句 in 和not in的替代方案
2024-01-18 00:31:02
oracle 存储过程和触发器复制数据
2024-01-19 19:27:46
Python实现网络端口转发和重定向的方法
2023-09-23 10:19:59
Python numpy之线性代数与随机漫步
2021-12-04 05:20:01
oracle 存储过程加密的方法
2009-03-06 10:58:00
ASP GetRef 函数指针试探
2011-03-16 11:09:00
SQL Server数据库定时自动备份
2024-01-13 22:01:25
Python文本处理简单易懂方法解析
2021-08-09 02:45:16
Python中工作日类库Busines Holiday的介绍与使用
2023-01-30 23:59:04
vscode搭建go开发环境案例详解
2024-02-07 06:09:48
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2023-01-10 05:48:48
详解tensorflow训练自己的数据集实现CNN图像分类
2023-02-28 10:47:04