算法基础:正整数指定规则排序问题(Golang实现)
2017-07-10 21:42
405 查看
给定字符串内有非常多正整数,要求对这些正整数进行排序。然后返回排序后指定位置的正整数
排序要求:依照每一个正整数的后三位数字组成的整数进行从小到大排序
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 }
相关文章推荐
- 算法基础:正整数指定规则排序问题(Golang实现)
- 算法基础:数组指定规则排序问题(Golang实现)
- Golang算法问题之数组按指定规则排序的方法分析
- 算法基础:整数拆分问题(Golang实现)
- 算法基础:田忌赛马问题(Golang实现)
- 算法基础:排列组合问题-全排列(Golang实现)
- 算法基础:最大递减数问题(Golang实现)
- 算法基础:整数拆分问题(Golang实现)
- 算法基础:最大递减数问题(Golang实现)
- Golang正整数指定规则排序算法问题分析
- 算法与数据结构基础系列(一): 链表的常见问题分析及实现
- NET中反射实现 可空类型 与基础类型的转换 以及获取指定属性的大小问题
- 算法基础:排序(三)——快速排序——Python实现
- 算法基础之python实现深度优先搜索中城堡问题
- 算法代码实现之快速排序,Golang(Go语言)实现
- 第 1 章 第 1 题 高级语言的排序问题 C++标准算法实现
- python实现基础排序算法之(插入排序)
- 基础算法学习之排序篇(js实现)
- 算法基础之python实现贪心算法中的雷达安装问题和二分法中誊抄书籍问题
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现