Java 数组的排序

    技术2022-07-17  66

    1、Arrays.sort()方法:最简单且最常用的排序方法。

    int[] arr = {45,34,59,55}; Arrays.sort(arr); //调用方法排序即可

    注意:sort方法具有局限性,只能升序排列数组中的元素。

    2、冒泡排序:(记住三点)

    比较轮数:数组长度-1轮冒泡出去的数以后就不参与比较了每次比较的数都是和下一个数进行比较

    冒泡排序示意图:

    int a[] = {64,1,28,37}; for(int i = 0;i < a.length-1;i++){ for(int j = 0;j<a.length-i;j++){ if(a[j]>a[j+1]){ int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } }

    输出a数组的值:1,28,37,64

    如果想要降序排列,我们修改嵌套循环中的判断即可。

    3、直接选择排序:(比冒泡排序快)

    轮数:数组长度-1轮在数组中选出最大或最小的数,然后和最后位置元素的索引进行调换每一轮调换出去的元素就不参与比较了

    选择排序示意图:

    int[] a = {64,28,1,17}; int index; for(int i = 0;i < a.length-1;i++){ index = 0; for(int j = 1;j <= a.length-1-i;j++){ if(a[index]<a[j]){ index = j; } } int tmp = a[a.length-1-i]; a[a.length-1-i] = a[index]; a[index] = tmp; } for(int arr:a) { System.out.print(arr + ","); }

    输出a数组的值:1,17,28,64

    4、总结:

    排序的轮数决定嵌套的外层循环次数。每轮比较的次数决定里层循环次数。冒泡排序是从数组第一个数开始和下一个数比较,然后进行交换,每轮选出当前数组未比较数中最大/小的数,然后冒泡出去,下一轮将不再进行比较。选择排序是从数组下标为0的数和下一个数比较,比较出最大/小的数,再用该数和下一个数比较,以此类推直到选出当前数组未比较的数中最大/小的数和数组未比较的元素的最后一个元素进行交换,当前轮交换到最后的元素下一轮将不进行比较。如果想修改正序和倒序排列,那么我们只修改内层循环中的判断即可(选取当前元素最大/小的元素)。
    Processed: 0.015, SQL: 10