Java中基于另一数组元素打印对应数组的实现问题
解决你的数组配对排序问题
看起来你需要的是:对整数数组排序后,还能对应打印出它在原未排序状态下关联的double数组元素对吧?这核心就是要保住整数和double元素的对应关系,不能光单独排序整数数组——那样就丢了映射啦。我给你拆解下思路,再给几个主流语言的示例:
核心思路
我们需要把原整数数组的每个元素,和它对应的double数组元素绑定成一对,然后对这些“配对”按整数大小排序。这样排序后,每一组配对里的整数是有序的,同时还带着对应的double值,直接遍历打印就行。
Java 实现示例
假设你用Java,我们可以自定义一个简单的配对类,或者用现成的Map(但自定义类更直观):
public class ArrayPairSort { public static void main(String[] args) { // 你的原数组 int[] arrayInt = {2, 4, 6, 5, 1}; double[] arrayDouble = {2.6, 6.9, 1.3, 2.4, 9.8}; // 把每个int和对应的double打包成配对对象 IntDoublePair[] pairs = new IntDoublePair[arrayInt.length]; for (int i = 0; i < arrayInt.length; i++) { pairs[i] = new IntDoublePair(arrayInt[i], arrayDouble[i]); } // 按整数大小排序配对数组 java.util.Arrays.sort(pairs, (pair1, pair2) -> Integer.compare(pair1.intValue, pair2.intValue)); // 遍历打印结果 for (IntDoublePair pair : pairs) { System.out.printf("排序后的整数: %d 对应的double值: %.1f%n", pair.intValue, pair.doubleValue); } } // 自定义配对类,用来存int和对应的double static class IntDoublePair { int intValue; double doubleValue; IntDoublePair(int intVal, double doubleVal) { this.intValue = intVal; this.doubleValue = doubleVal; } } }
运行后输出:
排序后的整数: 1 对应的double值: 9.8 排序后的整数: 2 对应的double值: 2.6 排序后的整数: 4 对应的double值: 6.9 排序后的整数: 5 对应的double值: 2.4 排序后的整数: 6 对应的double值: 1.3
Python 实现示例
Python的话更简洁,直接用zip打包两个数组,再排序就行:
# 你的原数组 array_int = [2, 4, 6, 5, 1] array_double = [2.6, 6.9, 1.3, 2.4, 9.8] # 打包数组并按整数排序 sorted_pairs = sorted(zip(array_int, array_double), key=lambda item: item[0]) # 打印结果 for int_val, double_val in sorted_pairs: print(f"排序后的整数: {int_val} 对应的double值: {double_val}")
输出和上面Java的完全一致,完美符合你的需求。
关键注意点
- 千万别单独排序
arrayInt,那样会破坏它和arrayDouble的索引对应关系,你就找不到原来的double值了。 - 不管用什么语言,核心都是保持元素的配对关系,再对配对排序。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

