Java 实现冒泡排序有两种不同的方法,还是我实现了不同的排序算法?

Java 实现冒泡排序有两种不同的方法,还是我实现了不同的排序算法?,java,arrays,sorting,bubble-sort,Java,Arrays,Sorting,Bubble Sort,我正在阅读排序算法,我完成了选择和冒泡排序,并认为我应该尝试实现我所理解的。我花了一段时间才理解我编写的打算成为选择排序的内容(代码片段-1)根本没有实现选择排序的关键功能(这是寻找未排序数组的最小值,并一次构建一个排序数组元素)。所以我又写了一个用于选择排序(代码片段-3)。但现在,我对片段-1很好奇。有人能告诉我它是否是冒泡排序吗 代码片段-1 public void sort(int[] arr) { // code snippet-1 int n = arr.length

我正在阅读排序算法,我完成了选择和冒泡排序,并认为我应该尝试实现我所理解的。我花了一段时间才理解我编写的打算成为选择排序的内容(代码片段-1)根本没有实现选择排序的关键功能(这是寻找未排序数组的最小值,并一次构建一个排序数组元素)。所以我又写了一个用于选择排序(代码片段-3)。但现在,我对片段-1很好奇。有人能告诉我它是否是冒泡排序吗

代码片段-1

public void sort(int[] arr) {
    // code snippet-1
    int n = arr.length;
    for (int i = 0; i < n; i++) {
        for(int j = i + 1; j < n; j++) {
            if(arr[i] > arr[j]){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}
public void排序(int[]arr){
//代码片段-1
int n=阵列长度;
对于(int i=0;iarr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=温度;
}
}
}
}

代码片段-2

public void sort(int[] arr) {
    // code snippet-2
    int n = arr.length;
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-1; j++) {
            if(arr[j] > arr[j+1]){
                int temp=arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
public void排序(int[]arr){
//代码片段-2
int n=阵列长度;
对于(int i=0;iarr[j+1]){
内部温度=arr[j];
arr[j]=arr[j+1];
arr[j+1]=温度;
}
}
}
}

代码片段-3

public void sort(int[] arr) {
    // Code snippet-3
    int n = arr.length;
    for (int i = 0; i < n; i++) {
        int min = i;
        for(int j = i + 1; j < n; j++){
            if(arr[j] < arr[min]) {
                min = j;
            }
        }
        int temp = arr[i];
        arr[i] = arr[min];
        arr[min] = temp;
    }
}
public void排序(int[]arr){
//代码片段-3
int n=阵列长度;
对于(int i=0;i


另外,在一个不太相关的情况下,有人能解释一下外部for循环条件(即
i对于冒泡排序和Arrayoutofbound异常有不同的方法)是如何通过比较数组中不存在的n+1元素来实现的

在代码段2中,您还可以通过执行以下操作来避免另一个循环:

for (int i = 0; i <= n-2; i++)
for(int i=0;i因为它是“不相关的”,所以当你做
arr[j]>arr[j+1]
时,你将超过当前的
j
。如果你一直走到最后,你的代码将在最后一个元素抛出该异常\