Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Sorting_Bubble Sort - Fatal编程技术网

Java-冒泡排序行为奇怪

Java-冒泡排序行为奇怪,java,arrays,sorting,bubble-sort,Java,Arrays,Sorting,Bubble Sort,我一直在尝试使用冒泡排序对整数数组进行排序。我有一个字符数组列表,它也与整数数组相对应(例如:integerArray[0]和charArray[0]一起),因此当我将冒泡排序应用于整数数组时,我希望对字符数组也进行相同的排序更改。我正试图用下面的代码来实现这一点。如果你看一下输入和输出,问题就更清楚了。我非常感谢你的帮助,谢谢 气泡排序: public static void BubbleSort() { int temp; char temp2; for (i

我一直在尝试使用冒泡排序对整数数组进行排序。我有一个字符数组列表,它也与整数数组相对应(例如:integerArray[0]和charArray[0]一起),因此当我将冒泡排序应用于整数数组时,我希望对字符数组也进行相同的排序更改。我正试图用下面的代码来实现这一点。如果你看一下输入和输出,问题就更清楚了。我非常感谢你的帮助,谢谢

气泡排序:

    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));

        }
    }

    }
}
气泡排序后:

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

if语句的最后一行有输入错误。应该是

characters.set(i + 1, temp2);
而不是

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

在交换字符之前,请先从
列表中提取字符,否则将使第一个值等于second@MadProgrammer它们已经存储在两个单独的数组中
characters.set(i+1,characters.get(i))
,首先将
i
设置为字符if
i+1
,然后为
i
的字符设置
i+1
,这基本上覆盖了
i
处的字符,并将相同的值设置回
i+1
。。。
characters.set(i + 1, characters.get(i));