冒泡排序没有正确排序 - Java

Cod*_*and 1 java arrays sorting for-loop bubble-sort

我一直试图用Java中的一个简单的冒泡排序方法来工作,我看不出它为什么不起作用的问题.我希望数组中的最低元素是第一个,最后一个是最高元素.在这里,我给已经排序的数组赋值方法[1, 2, 3, 4].

输出是一个数组[1, 3, 2, 4]- 所以它排序的东西,虽然它不应该.有人看到了这个问题吗?

import java.util.Arrays;

public class BubbleSort {
    public static int [] bubblesortMethode(int sortMe[])
    {
        int nrOfSwaps = 0;

        for (int i = 0; i < sortMe.length - 1; i++)  {
            for (int j = 1; j < sortMe.length; j++) {
                if(sortMe[i] > sortMe[j]){
                    int temp  = sortMe[j];
                    sortMe[j] = sortMe[i];
                    sortMe[i] = temp;
                }
            }
            nrOfSwaps++;
        }
        System.out.println("Number of swaps" + " " + nrOfSwaps);
        return sortMe;
    }

    public static void main (String[] args) {
        int sortMe [] = {1,2,3,4};
        System.out.println(Arrays.toString(bubblesortMethode(sortMe)));
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 7

如果(sortMe[i] > sortMe[j]),你应该只在i <j时交换它们.即使i> j,您的代码也会交换它们.

内部循环变量j应从1开始,i+1以确保j始终> i:

for (int i = 0; i < sortMe.length - 1; i++)  {
    for (int j = i + 1; j < sortMe.length; j++) {
        if(sortMe[i] > sortMe[j]){
            int temp  = sortMe[j];
            sortMe[j] = sortMe[i];
            sortMe[i] = temp;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)