Java如何根据数组B的取值提取排序后A的对应位次最小元素
实现方案
- 第一步:对数组A做升序排序,你已得到的排序结果
[3, 5, 7, 8, 11, 21]是正确的 - 第二步:提取元素时注意索引偏移:日常表述的「第k小」是1开头计数,而编程语言数组下标默认是0开头计数,所以取排序后A的元素时,索引值为
B[i] - 1,不能直接用B[i]作为索引 - 第三步:将提取到的元素存入临时数组,执行你已实现的结果数组升序排序逻辑,即可得到预期输出
代码示例(Java)
import java.util.Arrays; public class ArrayQuery { public static void main(String[] args) { int[] A = {7, 3, 8, 21, 5, 11}; int[] B = {3, 5, 1}; // 仅对A升序排序 Arrays.sort(A); int[] tempRes = new int[B.length]; for (int i = 0; i < B.length; i++) { // 核心逻辑:1基序号转0基索引 tempRes[i] = A[B[i] - 1]; } // 你已实现的结果数组升序排序逻辑 Arrays.sort(tempRes); // 输出结果:[3, 7, 11] System.out.println(Arrays.toString(tempRes)); } }
逻辑验证
提取阶段的计算过程:
B[0] = 3 → 对应排序后A的索引2 → 取值为7
B[1] = 5 → 对应排序后A的索引4 → 取值为11
B[2] = 1 → 对应排序后A的索引0 → 取值为3
得到临时数组[7, 11, 3],升序排序后即为预期结果[3, 7, 11]
内容的提问来源于stack exchange,提问作者Blunderbuss
相关产品推荐
相关产品推荐

