Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-控制台应用程序中的结果因程序执行时间而异_Java_Bubble Sort - Fatal编程技术网

Java-控制台应用程序中的结果因程序执行时间而异

Java-控制台应用程序中的结果因程序执行时间而异,java,bubble-sort,Java,Bubble Sort,我使用Java控制台应用程序实现了一个简单的冒泡排序算法。这是我的ArrayBub课程 public class ArrayBub { private int[] _numbersArray; // Constructor of class public ArrayBub(int[] numbersArray) { _numbersArray = numbersArray; } public void BubbleSort() { long startTime = Syste

我使用Java控制台应用程序实现了一个简单的冒泡排序算法。这是我的ArrayBub课程

public class ArrayBub {
private int[] _numbersArray;

// Constructor of class
public ArrayBub(int[] numbersArray) {
    _numbersArray = numbersArray;
}

public void BubbleSort() {
    long startTime = System.currentTimeMillis();
    System.out.println("Bubble sort - sort " + _numbersArray.length + " numbers in array (random order)");
    System.out.println("Initial array: " + Arrays.toString(_numbersArray));
    int i, j, temp;
    int n = _numbersArray.length;

    for (i = 0; i < n - 1; i++) {
        for (j = 1; j < n - i; j++) {
            if (_numbersArray[j - 1] > _numbersArray[j]) {
                temp = _numbersArray[j - 1];
                _numbersArray[j - 1] = _numbersArray[j];
                _numbersArray[j] = temp;
            }
        }
    }

    System.out.println("Final array: " + Arrays.toString(_numbersArray));
    System.out.println("Number of iterations: " + (i + 1));
    long endTime = System.currentTimeMillis();
    long executionTime = endTime - startTime;
    System.out.println("Execution time (in milliseconds): " + executionTime);
    System.out.println("-----------------------------------------------------------------------------");
}
这里有一个奇怪的问题:当我使用一个小数组时——比方说10个项目——结果看起来和预期的一样

气泡排序-按数组随机顺序对10个数字进行排序

初始数组:[4,5,1,9,10,6,2,8,3,7]

最终数组:[1,2,3,4,5,6,7,8,9,10]

迭代次数:10次

执行时间(毫秒):1

但是当我对大量整数执行完全相同的代码时,比如说50000,结果非常奇怪。这是控制台显示的内容

最终数组:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26……]

迭代次数:50000

执行时间(毫秒):4995

最终数组:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26……]

初始数组:[3950013400482761199725616,…]


那么,为什么会发生这种情况,结果会变得一团糟呢?

您使用的是Netbeans/eclipse控制台吗?有时,他们的集成控制台不尊重输出顺序,但如果您在操作系统本机终端上运行它,您应该会看到正确的输出顺序order@BackSlash是的,我正在使用eclipse。我将尝试在终端上运行代码,并让您知道…@反斜杠即使我使用控制台进行输出,结果仍然很奇怪。我认为输出非常大,因此eclipse和console无法正确显示它。我所做的是,我将输出写入一个txt文件,代码对于任何数字都可以正常工作,即使是50.000位。所以也许你应该写下你的建议作为回应,这样我就可以接受了。谢谢
public class ArrayGenerator {
public int[] GenerateRandomArray(int numberOfDigits) {
    ArrayList<Integer> list = new ArrayList<Integer>();
    int[] array = new int[numberOfDigits];
    long seed = System.nanoTime();
    int i;

    for (i = 1; i <= numberOfDigits; i++) {
        list.add(i);
    }

    Collections.shuffle(list, new Random(seed));

    for (i = 0; i <= list.size() - 1; i++) {
        array[i] = list.get(i).intValue();
    }

    return array;
}
new ArrayBub(new ArrayGenerator().GenerateRandomArray(10)).BubbleSort();