当前位置:  开发笔记 > 编程语言 > 正文

对数组进行排序,以便第一个和最后一个元素形成"对"

如何解决《对数组进行排序,以便第一个和最后一个元素形成"对"》经验,为你挑选了1个好方法。

我有一个对象数组,我想按以下顺序按索引排序.我将始终拥有2的幂的数组大小.

示例数组大小:8.指数: [0][1] [2][3] [4][5] [6][7]

排序后: [0][7] [1][6] [2][5] [3][4]

所以基本上在第一个和最后一个元素之间交替,但尚未排序.

我已经想到了这样做的方法,我可以得到"对",但它们的顺序错误(我认为它不适用于2阵列的强大功能吗?).在这里,我使用一个int数组及其索引作为值,使我自己更简单.

int[] array = new int[]{0,1,2,3,4,5,6,7};
int[] sortedArray = new int[8];
for(int i = 0; i < array.length; i+=2){
    sortedArray[i] = array[i];
}
for(int i = 1; i < array.length; i+=2){
    sortedArray[i] = array[array.length - i];
}

输出: [0][7] [2][5] [4][3] [6][1]



1> Tunaki..:

您可以使用单个循环执行此操作.考虑以下算法:

int[] array = new int[]{0,1,2,3,4,5,6,7};
int[] sortedArray = new int[8];
for(int i = 0; i < array.length; i+=2){
    sortedArray[i] = array[i/2];
    sortedArray[i + 1] = array[array.length - i/2 - 1];
}
System.out.println(Arrays.toString(sortedArray)); // prints [0, 7, 1, 6, 2, 5, 3, 4]

这通过一次设置两个值来创建最终数组:

结果数组的每个偶数索引都使用初始数组的第一个值进行映射

结果数组的每个奇数索引都使用初始数组的最后一个值进行映射

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有