首页 新闻 会员 周边

求助:取数组最小值的问题,不能排序。

0
悬赏园豆:100 [已解决问题] 解决于 2011-05-23 16:51

题目是这样的,有a,b两个数组,a的长度大于b,需要将a中最小值放到b的第一位,a中第二小的值放到b的第二位,以此类推,直到b的长度。

要求:不能使用其他数组,不能改变数组a。

谁有好办法,给个思路也行

麦克白的主页 麦克白 | 初学一级 | 园豆:100
提问于:2011-05-21 10:09
< >
分享
最佳答案
0

假设a有n个数  b有m个数(n>m) ,取前m个a放入b ,在b中做排序(比如冒泡)。排序好后得到新的b。

然后把第m+1个a与b中的数进行判断,插入到指定的位置,循环直到第n个数

收获园豆:40
死白的man | 老鸟四级 |园豆:2135 | 2011-05-21 23:09
其他回答(3)
0

冒泡排序数组a,循环赋值数组b

Ou lei | 园豆:619 (小虾三级) | 2011-05-21 10:57
不能改变数组a
支持(0) 反对(0) 麦克白 | 园豆:100 (初学一级) | 2011-05-21 11:22
你可以声明一个中间变量c,
支持(0) 反对(0) Ou lei | 园豆:619 (小虾三级) | 2011-05-21 11:40
不能使用其他数组。。。
支持(0) 反对(0) 麦克白 | 园豆:100 (初学一级) | 2011-05-21 11:51
那你声明b.length个int型的变量吧。。
支持(0) 反对(0) Ou lei | 园豆:619 (小虾三级) | 2011-05-21 12:59
0

从题目看,最终目的是把a数组中b数组长度个的最小值放到b中,那么可以认为b就是一个空数组,最直接想到的方法如下

定义一个临时变量temp,把a[0]赋给b[0],比较a[1]和b[0],如果a[1]比b[0]小就把b[0]移到b[1],a[1]赋给b[0],反之则把a[1]赋给b[1],以此类推,循环a把a中的每个值与b中的值循环比较并插入b,使b保持从小到大的顺序,当循环到a[b.lengh]的时候把b中最后一个数字抛弃,直道完成循环a,在这个过程中只有对b中数字作移动时需要一个临时变量

(这个办法可能笨了点,但我第一时间就想到这个了,利用一些数学方法可能还能有更好的算法)

收获园豆:40
七月霄雨 | 园豆:1282 (小虾三级) | 2011-05-21 17:42
0

默认将A中第一个数作为最小数放入B中,循环数组A。依次将A中的元素N放入B中,在放入B中前判断元素N是否小于B中最后一个元素M(如果N小于M,交互M和N的位置直到N不小于它在B中的前一个元素)。

希望能帮到你!

收获园豆:20
老虞 | 园豆:99 (初学一级) | 2011-05-21 20:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册