Java-冒泡排序行为奇怪
我一直在尝试使用冒泡排序对整数数组进行排序。我有一个字符数组列表,它也与整数数组相对应(例如:integerArray[0]和charArray[0]一起),因此当我将冒泡排序应用于整数数组时,我希望对字符数组也进行相同的排序更改。我正试图用下面的代码来实现这一点。如果你看一下输入和输出,问题就更清楚了。我非常感谢你的帮助,谢谢 气泡排序: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
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
设置为字符ifi+1
,然后为i
的字符设置i+1
,这基本上覆盖了i
处的字符,并将相同的值设置回i+1
。。。
characters.set(i + 1, characters.get(i));