我想对某些数字+字符串组合进行排序,但排序将基于该组合中的数字。你能建议一个最佳的解决方案吗?
说我的字符串是:
12 Masdf
4 Oasd
44 Twer
等等。排序将基于12,4,44等数字,排序后我必须显示完整的字母数字字符串。
由于程序将运行数千个数据,我不想拆分字符串并比较每次迭代的数字。我的计划是提取数字并将数据放入数组中,然后对数组进行排序。完成排序后,我想将带有相关字符串的数字放回去,并将它们保存在字符串数组中以显示。 它应该用C ++完成。应该使用算法 - 插入排序,快速排序,合并排序等
答案 0 :(得分:0)
创建一个类来存储完整的字符串和数字。上课Comparable
。将您的字符串列表转换为Class列表。使用哪种排序方法对列表进行排序。迭代列表并打印字符串字段。
很抱歉,这是Java的答案,因为您将其标记为Java。替换/删除Comparable
以获取适合C ++的任何内容。
答案 1 :(得分:0)
我将假设这两个部分是在单独的变量中,并不是一起作为一个字符串(如果他们只是将它们存储在一个列表中)。
首先考虑一张地图。每个桶'地图的数字可以用数字表示。在每个映射中,存储桶是列表中的一串字符串。 (注意,这也可以用数组来解决,特别是如果整数部分总是处于某个固定值之下)java等价物看起来像:
{{1}}
对于此自定义集合的排序,首先会在地图上搜索返回列表的值的整数部分。列表中的每个项目都具有相同的起始编号。所以我们现在在列表中搜索值的字符串部分(我假设列表已经排序,因此您可以执行任何您想要的排序,即:selection / quicksort)。
此搜索的优点意味着如果在Hashmap中找不到该数字,您立即知道它没有字符串部分。