冒泡排序的输出不正确

时间:2015-11-18 23:30:36

标签: java bubble-sort

我一直在研究这段代码大约一周;我正在尝试创建一个生成随机数的程序,然后使用Bubble方法对它们进行排序,但我收到此消息“冒泡排序:[I @ ad3ba4”。有没有人看到有什么问题我觉得这很简单,但我找不到问题。

import java.util.Random;
public class sortLibrary {
    private static void bubbleSort(int[] list) {
        int n = list.length;
        int temp = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j < (n - 1); j++) {
                if (list[j - 1] > list[j - 1]) {
                    temp = list[j - 1];
                    list[j - 1] = list[j];
                    list[j] = temp;
                }
            }
        }
        System.out.println("\nBubble Sort: " + list);
    }
    public static void main(String args[]) {
        System.out.println("Unsorted list:");
        Random numbers = new Random();
        int list[] = new int[20];
        for (int i = 0; i < 20; i++) {
            list[i] = numbers.nextInt(100);
        }
        for (int i = 0; i < 20; i++) {
            System.out.print(list[i] + "  ");
        }
        bubbleSort(list);
    }
}

3 个答案:

答案 0 :(得分:3)

您不能简单地打印带有println()的列表。这只适用于字符串。

相反,将list中的println()替换为Arrays.toString(list),将数组转换为字符串进行打印。

或者,您可以将其打印为数组,类似于@KyleGowen的回答。这是在Java中迭代数组的另一种形式:

String arrayToString = "";
for(int item : list) {
    arrayToString += item + ", ";
}
System.out.println("Bubble sort: [" + arrayToString.substring(0, arrayToString.length()-2) + "]");

这也应该很好地打印出来。

TutorialPoint's online Java compiler处查看这两项内容。

答案 1 :(得分:1)

现在,您不能像这样在java中打印Array。如果要打印所有数组,则需要使用索引或使用以下内容:

System.out.println("\nBubble Sort: " + Arrays.toString(list));

同样在你的if语句中,你有list[j - 1] > list[j-1]。我认为会有list[j - 1] > list[j]。所以你的代码看起来像:

import java.util.Arrays;
import java.util.Random;

public class bubble {

    private static void bubbleSort(int[] list) {
        int n = list.length;
        int temp = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j < (n - 1); j++) {

                if (list[j - 1] > list[j]) {
                    temp = list[j - 1];
                    list[j - 1] = list[j];
                    list[j] = temp;
                }
            }
        }
        System.out.println("\nBubble Sort: " + Arrays.toString(list));
    }

    public static void main(String args[]) {
        System.out.println("Unsorted list:");
        Random numbers = new Random();
        int list[] = new int[20];
        for (int i = 0; i < 20; i++) {
            list[i] = numbers.nextInt(100);
        }
        for (int i = 0; i < 20; i++) {
            System.out.print(list[i] + "  ");
        }

        bubbleSort(list);

    }
}

答案 2 :(得分:0)

您实际上是用

打印出列表的内存地址
string s = "b\0OU0IDBGR9247884874<<<<<<<<<<<<<<<|8601130M1709193BGR8601138634<3|IVANOV<";
s = string.Join("", Regex.Split(s, "(ID|I<|P<|V<|VI)").Skip(1));

您很可能想要遍历列表并打印出值。类似的东西:

System.out.println("\nBubble Sort: "+list);

我希望这会有所帮助。