冒泡排序打印出错误的顺序?

时间:2015-11-23 01:08:51

标签: arrays sorting

所以我的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;
     }
}

2 个答案:

答案 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);
        }
    }
}