猿问

改组数组(Java)

我试图在一个数组中随机乱洗整数。这似乎很简单,但我必须将它们洗牌以使它们仍然保持特定的顺序(奇数,偶数,奇数,偶数等)。例如,如果原始数组包含[1,2,3,4,5,6,7,8],则混洗数组可能看起来像[5,8,7,4,1,6,3,2],但始终保持相同的交替顺序,从奇数开始。

谢谢您的帮助。顺便说一句,这不是我确切的功课问题。我只想弄清楚如何做到这一点,这样我才能完成我的作业。我不知道从哪里开始。


呼如林
浏览 446回答 4
4回答

天涯尽头无女友

我可能会:将ODD索引位置的所有元素抓取到一个单独的数组中并随机播放将EVEN索引位置的所有元素抓取到一个单独的数组中并随机播放; 然后将它们拼接在一起

HUH函数

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

慕侠2389804

改变阵列的一种方法是“随机排序”项目。例如,如果您使用的是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) -> {&nbsp; &nbsp; /* Obtain random number between 0 - 1 */&nbsp; &nbsp; Integer randomValue = random.nextInt(1);&nbsp; &nbsp; /* Return random positive or negative value which causes "shuffled"&nbsp;&nbsp; &nbsp; sort */&nbsp; &nbsp; return randomValue == 1 ? 1 : -1;});/* list is now shuffled */
随时随地看视频慕课网APP

相关分类

Java
我要回答