侧边栏壁纸
  • 累计撰写 24 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Java中的数组排序

阿杰
2022-06-02 / 0 评论 / 0 点赞 / 176 阅读 / 1,100 字

💍 冒泡排序

:::info

[基本思想:]

冒泡排序法:顾名思义,从下到上,两两进行比较,越小的越往上,从而形成由小到大的排序。冒泡排序的基本思想是对比相邻的原始值,如果满足条件就交换元素值,把较小的元素移到数组前面,把大的元素移动到数组的后面,这样较小的元素就像气泡从底部上升到顶部。
:::

class Demo {
    public static void main(String[] args) {

        int[] arr1 = {3, 22, 5, 3, 66, 2, 9};

        sort1(arr1);

        //使用foreach循环输出
        for (int x : arr1) {
            System.out.println(x + " ");
        }
        //使用字符串表达形式输出,输出形式更为直观
        System.out.println(Arrays.toString(arr));
    }

    public static void sort1(int[] arr1) {
        int temp;
        //根据角标进行比较,
        for (int i = 0; i < arr1.length; i++) {
            //j是数组的最后一个角标
            for (int j = arr1.length - 1; j > i; j--) {
                if (arr1[j] < arr1[j - 1]) {
                    //从后往前进行比较,小数往前,一轮之后最小数就在最前面了
                    temp = arr1[j - 1];
                    arr1[j - 1] = arr1[j];
                    arr1[j] = temp;
                }
            }
        }
    }
}

💍 调用Arrays.sort类方法进行排序

:::info
[网上一些说法]
快速排序主要是对哪些基本类型数据(int,short,long等)排序, 而合并排序用于对对象类型进行排序。
使用不同类型的排序算法主要是由于快速排序是不稳定的,而合并排序是稳定的。这里的稳定是指比较相等的数据在排序之后仍然按照排序之前的前后顺序排列。对于基本数据类型,稳定性没有意义,而对于对象类型,稳定性是比较重要的,因为对象相等的判断可能只是判断关键属性,最好保持相等对象的非关键属性的顺序与排序前一直;另外一个原因是由于合并排序相对而言比较次数比快速排序少,移动(对象引用的移动)次数比快速排序多,而对于对象来说,比较一般比移动耗时。
补充一点合并排序的时间复杂度是nlogn, 快速排序的平均时间复杂度也是nlogn,但是合并排序的需要额外的n个引用的空间 ……
:::

class Demo {
    public static void main(String[] args) {
    // 第一种    
    int[] arr2 = {0,3,4,6,8,9,2,5,1,7};
        Arrays.sort(arr2);
        for(int i = 0; i < arr2.length ; i++){
             System.out.print(arr2[i]+" ");
        }
    // 第二种调用本类方法实现    
    int[] arr2 = {89,59,12,36,45,0,6,1,3,2};
    Arrays.sort(arr2);
        for (int i = 0; i <arr2.length ; i++) {
            System.out.print(arr2[i]+" ");
        }
    sort2(arr2);
    }
    // 第三种
     int[] arr = {4, 3, 5, 1, 2, 9, 3, 0};

        Arrays.sort(arr, 1, 4);

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + ",");
        }

    public static void sort2(int[] arr2) {
    //第二种调用本类方法实现    
    }

}

💍 选择排序

:::info
[基本思想:]
直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,指定这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换(如果最后一个元素开始排序,第一步就是将数组中的最大数值与数组最后一位交换位置,以此类推),这样排序好的位置就会逐渐扩大,最好整个数组都成为已经排序好的格式。
:::

class Demo {
    public static void main(String[] args) {
        sort();
    }

    public static void sort() {
        int[] arr3 = new int[]{45, 23, 15, 89, 68, 12, 0, 1, 3, 2};
        // int temp = 0;
        for (int i = 0; i < arr3.length; i++) {
            for (int j = i + 1; j < arr3.length; j++) {
                if (arr3[i] > arr3[j]) {
                   int temp = arr3[i];
                    arr3[i] = arr3[j];
                    arr3[j] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

💍 总结

💍 以上就是本文关于Java中的数组排序代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他Java相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

0
博主关闭了所有页面的评论