C++ 排序问题

breakfisher 2015-08-12 04:16:05
请教大家一个C++ 按序排序的问题:
现在有一个字符串数组 data[] = {bb, aa, ee, dd, cc....}
默认情况下, 可以按照字母顺序输出, 即 {aa, bb, cc, dd, ee}
现在要求外部可以随机指定一个部分输出顺序, 指定部分按输出顺序输出数组, 没有指定部分依然按照字母顺序输出。
比如对于这个数组, {bb, aa, ee, dd, cc....} 默认情况下输出 {aa, bb, cc, dd, ee}。
1. 假如 指定 输出顺序为{aa, ee, cc}, 则输出结果为 {aa bb ee dd cc}
2. 假如 指定 输出顺序为{cc, aa}, 则输出结果为{cc bb aa dd ee}
3. 假如 指定 输出顺序为{dd aa bb}, 则输出结果为{dd aa cc bb ee}

请问大家有比较高效的算法不?
...全文
319 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你给的3得结果有问题吧。
  • 打赏
  • 举报
回复
这个是这样的从原有的字符串{bb, aa, ee, dd, cc....} 中取出指定 输出顺序为{aa, ee, cc},剩下的字符串就是{bb dd}按照顺序排序就是bb dd,然后将输出顺序的串插入到剩下的字符串的排序串中就行了中间只隔一个就是aa,bb,ee,dd,cc; 默认的时候指定输出的串为空,所以剩下的字符串就是原来的串排序。 2. 假如 指定 输出顺序为{cc, aa}, 剩下的串为 {bb,ee,dd} 排序后就是 bb,dd,ee 然后插入cc,aa 则输出结果为{cc bb aa dd ee} 3. 假如 指定 输出顺序为{dd aa bb},剩下的串为{ee,cc} 排序后是 cc,ee, 插入dd,aa,bb 则输出结果为{dd cc aa ee bb}
cangmangxiong 2015-08-15
  • 打赏
  • 举报
回复
这个既然已经默认排序了,在排好的数组里面,把涉及到的需要换位置的元素换下位不可以么。
zilaishuichina 2015-08-15
  • 打赏
  • 举报
回复
还是先按字母顺序排序成 aa, bb,cc, dd, ee 然后调换顺序 1. 假如 指定 输出顺序为{aa, ee, cc}, 则将{aa, ee, cc}在上一步排序后的当前位置按顺序{1, 3, 5},分别替换为{aa, ee, cc} 2. 假如 指定 输出顺序为{cc, aa}, 则将{cc, aa}在上一步排序后的当前位置按顺序{1, 3},分别替换为{cc, aa} 3. 假如 指定 输出顺序为{dd, aa, bb}, 则将{dd, aa, bb}在上一步排序后的当前位置按顺序{1, 2, 4},分别替换为{dd, aa, bb}
yang3270112 2015-08-14
  • 打赏
  • 举报
回复
如果数组只存有这么点数据,你完全可以用暴力解法,把每种要求都保存到一个数组里。
li4c 2015-08-14
  • 打赏
  • 举报
回复
你在说什么?
qq_19242821 2015-08-14
  • 打赏
  • 举报
回复
真不知道你要干嘛~!
707wk 2015-08-13
  • 打赏
  • 举报
回复
不知所云
赵4老师 2015-08-13
  • 打赏
  • 举报
回复
严密的逻辑思维是码农的基本素质。
  • 打赏
  • 举报
回复
1. 假如 指定 输出顺序为{aa, ee, cc}, 则输出结果为 {aa bb ee dd cc} 这个勉强理解,但为什么不是:{aa, ee, cc bb dd} 2. 假如 指定 输出顺序为{cc, aa}, 则输出结果为{cc bb aa dd ee} 这个为什么不是:{cc aa bb dd ee} 3. 假如 指定 输出顺序为{dd aa bb}, 则输出结果为{dd aa cc bb ee} 这个为什么不是:{dd aa bb cc ee} 无法理解是什么逻辑。。。所以更别提写程序了。。。
fly_dragon_fly 2015-08-12
  • 打赏
  • 举报
回复
记一下顺序就好了, 比如{aa, ee, cc}, map<string,int> s2i,; 把字符串转成整数, 假如"aa"->0, "ee"->1, 定义一个bool G[n][n], 定义一个关系,上面有G[0][1]=G[0][2]=G[1][2]=1, 在sort中先找一个关系,没有就按正常比较

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧