主题:[讨论]求一个排序思路
telancs
[专家分:680] 发布于 2007-08-08 21:09:00
[size=2][color=000080] 现在有a[m]、b[n]两个数组,m > n,a数组是无序的,b数组为空,现在要求将a中最小的放在b[0]中,a中次小的放在b[1]中,依此类推,装满b数组。[/color][/size]
[size=3][color=FF0000][size=2] [b]规定:不能创建其他数组。[/size][/color][/size][/b]
[size=2]请大师们指点一下迷津,给一下解题思路,谢谢先!!![/size]
最后更新于:2007-08-08 21:10:00
回复列表 (共7个回复)
沙发
dorremon1992 [专家分:870] 发布于 2007-08-11 04:05:00
只要将a数组中的数字排序一下就可以了
然后将前n个数字复制进b数组
板凳
dorremon1992 [专家分:870] 发布于 2007-08-11 04:07:00
或者使用遍历的方法扫描a数组中的数字
找到一个最小数后 将其复制进b数组 并把a数组中的这个数变为最大
但是这个程序的复杂度是O(m)很大的
3 楼
wyjq395 [专家分:2710] 发布于 2007-08-12 00:16:00
[quote]
但是这个程序的复杂度是O(m)很大的[/quote]
大哥:对于这样的程序能写出复杂度O(m)的程序的话,你一定是世界第一牛了,就别那么谦虚还说时间复杂度很大了。
不过你那方法还是不错的
4 楼
Chipset [专家分:16190] 发布于 2007-08-15 18:58:00
对a数组采用堆排序,只排序出前n个最小的,然后复制到b数组。
6 楼
trustme [专家分:0] 发布于 2007-08-18 21:28:00
[quote]对a数组采用堆排序,只排序出前n个最小的,然后复制到b数组。[/quote]
那代码怎么实现呢?
7 楼
iphenix [专家分:0] 发布于 2007-08-28 10:50:00
可以对a数组由小到大排序,然后将前面的n个数复制到b中
我来回复