回 帖 发 新 帖 刷新版面

主题:[讨论]求一个排序思路

[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]

回复列表 (共7个回复)

沙发

只要将a数组中的数字排序一下就可以了
然后将前n个数字复制进b数组

板凳

或者使用遍历的方法扫描a数组中的数字
找到一个最小数后 将其复制进b数组 并把a数组中的这个数变为最大
但是这个程序的复杂度是O(m)很大的

3 楼

[quote]
但是这个程序的复杂度是O(m)很大的[/quote]
大哥:对于这样的程序能写出复杂度O(m)的程序的话,你一定是世界第一牛了,就别那么谦虚还说时间复杂度很大了。
不过你那方法还是不错的

4 楼

对a数组采用堆排序,只排序出前n个最小的,然后复制到b数组。

5 楼


这个方法好

6 楼

[quote]对a数组采用堆排序,只排序出前n个最小的,然后复制到b数组。[/quote]
那代码怎么实现呢?

7 楼

可以对a数组由小到大排序,然后将前面的n个数复制到b中

我来回复

您尚未登录,请登录后再回复。点此登录或注册