【问题标题】:Java - Bubble Sort Acting StrangeJava - 冒泡排序表现奇怪
【发布时间】:2017-01-12 00:06:01
【问题描述】:

我一直在尝试使用冒泡排序对整数数组进行排序。我有一个字符数组列表,它也对应于整数数组(例如:integerArray[0] 和 charArray[0] 一起使用),所以当我将冒泡排序应用于整数数组时,我希望在排序方面进行相同的更改也可以做成 char 数组。我正在尝试使用下面的代码来做到这一点。如果您查看输入和输出,问题会更清楚。非常感谢您的帮助,谢谢。

冒泡排序:

    public static void BubbleSort() {
    int temp;
    char temp2;
    for (int x = 0; x < numberOfOccurences.length - 1; x ++) {
    for (int i = 0; i < numberOfOccurences.length - 1; i++) {
        if (numberOfOccurences[i] < numberOfOccurences[i + 1]) {
            temp = numberOfOccurences[i];
            temp2 = characters.get(i);
            numberOfOccurences[i] = numberOfOccurences[i + 1];
            characters.set(i, characters.get(i+1));
            numberOfOccurences[i + 1] = temp;
            characters.set(i + 1, characters.get(i));

        }
    }

    }
}

按预期对应数组值:

3 : S
22 : i
14 : d
28 : h
30 : a
20 : r
34 : t
60 :  
11 : w
43 : e
14 : n
16 : o
2 : K
12 : m
16 : s
7 : c
9 : ,
7 : u
4 : v
7 : l
2 : b
2 : p
2 : f
3 : .
8 : y
6 : g
1 : P

冒泡排序后:

60 :  
43 : e
34 : e
30 : e
28 : e
22 : e
20 : e
16 : o
16 : s
14 : s
14 : s
12 : s
11 : s
9 : ,
8 : y
7 : y
7 : y
7 : y
6 : g
4 : g
3 : g
3 : g
2 : g
2 : g
2 : g
2 : g
1 : P

【问题讨论】:

  • 在交换它们之前从List 中提取字符,否则你会喜欢使第一个值等于第二个
  • @MadProgrammer 它们已经存储在两个单独的数组中。
  • 仔细看看characters.set(i, characters.get(i+1));characters.set(i + 1, characters.get(i));,首先将i设置为i+1的字符,然后将i + 1设置为i的字符,即基本上覆盖i处的字符并将相同的值设置回i + 1...

标签: java arrays sorting bubble-sort


【解决方案1】:

if 语句的最后一行有错字。应该是

characters.set(i + 1, temp2);

而不是

characters.set(i + 1, characters.get(i));

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2017-06-17
    • 2017-03-11
    相关资源
    最近更新 更多