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
  • asp之家 网络编程 m.aspxhome.com