冒泡排序功能不对给定数组

时间:2018-06-01 17:13:30

标签: java arrays bubble-sort

所以基本上,我已经设置了bubblesort算法,奇怪的是它没有返回排序数组只是未排序的数组。

给定的数组;

int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };

冒泡排序算法;

public static int[] sort_array(int[] array) {

    int [] sorted = array;
    int temp = 0;

    for (int i = 0; i < sorted.length - 1; i++) {
        for (int j = 0; i < sorted.length - i - 1; i++) {
            if (sorted[j] > sorted[j + 1]) {
                temp = sorted[j];
                sorted[j] = sorted[j + 1];
                sorted[j + 1] = temp;
            }
        }
    }
    return sorted;
}

还做了一个数组返回方法;

public static void return_list(int[] array) {

    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]);
    }
}

使用这些方法后,它只返回未排序的数组。

int[] array = { 20, 5, 1, 6, 23, 52, 15, 12 };

sort_array(array);

return_list(array);

输出= 20,5,1,6,23,52,15,12;

3 个答案:

答案 0 :(得分:4)

复制数组(假设您要保留原始数组)

首先,您不是在这里将array复制到sorted。您正在将数组引用复制到已排序,因此sorted

中也会显示对array内容的任何更改
int [] sorted = array;

执行此操作以实例化新数组sorted并将内容从array复制到其中: Make copy of array

有几种方法(Arrays.copyOf,clone等)可以进行数组复制。例如:

int[] sorted = Arrays.copyOf(array, array.length);

排序错误

此外,您的for循环中可能存在错误。你没有在这一行中迭代j

for (int j = 0; i < sorted.length - i - 1; i++)

所以,看起来你得到一个未排序的数组的原因是数组没有正确排序。

答案 1 :(得分:0)

您每次都在检查i的值,并在每次迭代

时增加它的值
for (int j = 0; i < sorted.length - i - 1; i++)

答案 2 :(得分:0)

有一个错误: 在这里用j替换i - &gt; for(int j = 0; i(这里)