为了账号安全,请及时绑定邮箱和手机立即绑定

改组数组(Java)

改组数组(Java)

呼如林 2019-04-26 18:19:01
我试图在一个数组中随机乱洗整数。这似乎很简单,但我必须将它们洗牌以使它们仍然保持特定的顺序(奇数,偶数,奇数,偶数等)。例如,如果原始数组包含[1,2,3,4,5,6,7,8],则混洗数组可能看起来像[5,8,7,4,1,6,3,2],但始终保持相同的交替顺序,从奇数开始。谢谢您的帮助。顺便说一句,这不是我确切的功课问题。我只想弄清楚如何做到这一点,这样我才能完成我的作业。我不知道从哪里开始。
查看完整描述

4 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

我可能会:

  1. 将ODD索引位置的所有元素抓取到一个单独的数组中并随机播放

  2. 将EVEN索引位置的所有元素抓取到一个单独的数组中并随机播放; 然后

  3. 将它们拼接在一起


查看完整回答
反对 回复 2019-05-15
?
HUH函数

TA贡献1836条经验 获得超4个赞

Collections.shuffle(Arrays.asList(array));

随着数组[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我得到输出[9, 5, 8, 2, 0, 7, 4, 3, 6, 1]

需要注意的是,它无法与原始数组一起使用,int[]不会起作用Integer[]


查看完整回答
反对 回复 2019-05-15
?
慕侠2389804

TA贡献1719条经验 获得超6个赞


改变阵列的一种方法是“随机排序”项目。


例如,如果您使用的是Java 8或更高版本,则可以提供一个排序隔离区作为下面显示的lambda,它在排序操作期间在每次迭代时返回正或负索引以获得混洗结果:


ArrayList<Integer> list = new ArrayList<>();

Random random = new Random();


/* Ordered input list */

list.add(1);

list.add(2);

list.add(3);

list.add(4);

list.add(5);


/* Apply random sorting behavior to achieve obtain a shuffled array */

Collections.sort(list, (Integer a, Integer b) -> {

    /* Obtain random number between 0 - 1 */

    Integer randomValue = random.nextInt(1);


    /* Return random positive or negative value which causes "shuffled" 

    sort */

    return randomValue == 1 ? 1 : -1;

});


/* list is now shuffled */


查看完整回答
反对 回复 2019-05-15
  • 4 回答
  • 0 关注
  • 445 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号