首页 > 解决方案 > 对随机生成的数字向量进行排序

问题描述

我正在尝试解决一个问题,但我找不到为什么我的代码不能解决这个问题。我已经生成了一个包含 100 个元素的随机向量,并试图将它们排列成另一个。不知何故,我新生成的向量填充了随机向量的最后一个索引值。

int[] vetorAleatory = new int[100];

for (int i = 0; i < vetorAleatory.length; i++) {
    vetorAleatory[i] = new Random().nextInt(1000);
}

int[] vetorByOrder = new int[100];
int newVetorPosition = 0;

for (int i = 0; i < 100; i++) {
    for (int x = 0; x < 100; x++) {

        vetorByOrder[newVetorPosition] = 2000;
        if (vetorAleatory[i] < vetorByOrder[newVetorPosition]) {
            boolean newEntry = true;
            for (int y = 0; y < newVetorPosition; y++) {
                if (vetorByOrder[y] == vetorByOrder[newVetorPosition]) {
                    newEntry = false;
                    break;
                }
            }
            if (newEntry == true) {
                vetorByOrder[newVetorPosition] = vetorAleatory[x];
            }
        }
        if (x == 99) {
            newVetorPosition++;
        }
    }
}

for (int i = 0;i<100;i++) {
    System.out.print(vetorAleatory[i] + ", " + vetorByOrder[i] + System.lineSeparator());
}

标签: java

解决方案


首先,您不需要 3 个循环来对数组进行排序。您只需要 2 个,并且在快速搜索的情况下,它甚至更少。您可以查看此示例数组排序和搜索,或者您可以使用 Java 中内置的 Arrays.sort 方法


推荐阅读