所以我的BubbleSort不按正确顺序打印我的数组元素。在这种情况下,它打印出来: 4 五 1 3.
我以为我正确编写了程序但是 我完全不知道该怎么做,所有建议都表示赞赏,谢谢!
public class BubbleSort {
public void Print(){
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] BubbleSort = {1, 5, 4, 3};
int lengthOfArray = BubbleSort.length;
for (int i = 0; i < lengthOfArray; i++){
for (int n = 1; n < lengthOfArray - i; n++){
if (BubbleSort[n - 1] > BubbleSort[n]){
Swap(i, n , BubbleSort);
}
}
}
for(int i=0;i < lengthOfArray ;i++){
System.out.println( BubbleSort[i]);
}
}
private static void Swap(int index1, int index2, int[] array) {
int temp;
temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
}
答案 0 :(得分:0)
在冒泡排序中,您查看序列中的每个元素,然后在查看之后交换任何元素,如果它更少。在您的代码中,您不会留在要比较的元素上:
if (BubbleSort[n - 1] > BubbleSort[n])
你需要留在你正在看的元素上:
if (BubbleSort[i] > BubbleSort[n])
然后,在内部循环中,从您正在比较的元素之后的元素开始,并继续直到序列结束:
for (int n = i + 1; n < lengthOfArray; n++)
答案 1 :(得分:0)
对于Swap()
方法,算法看起来很好除了。把它改成这一切,一切都应该是好的:
private static void Swap(int index, int[] array) {
int temp = array[index - 1];
array[index - 1] = array[index];
array[index] = temp;
}
使用如下方法:
for (int i = 0; i < lengthOfArray; i++) {
for (int n = 1; n < lengthOfArray - i; n++) {
if (BubbleSort[n - 1] > BubbleSort[n]) {
Swap(n, BubbleSort);
}
}
}