• Java的选择排序、冒泡排序、插入排序


    不爱生姜不吃醋
    如果本文有什么错误的话欢迎在评论区中指正
    与其明天开始,不如现在行动!


    🌴前言

    本文内容是关于选择排序、冒泡排序、插入排序的,代码编写使用的是Java。


    🌴一、选择排序

    1.原理

    第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

    注:选择排序是不稳定的排序方法

    2.时间复杂度

    O(n²)

    3.代码实现

    import java.util.Arrays;
    public class Example1 {
        public static void main(String[] args) {
            int[] arr = {5, 7, 2, 6, 4, 1, 3, 9, 8};
            SelectSort(arr);
            System.out.println(Arrays.toString(arr));
        }
    
        public static void SelectSort(int[] arr) {
            for (int i = 0; i < arr.length; i++) {
                for (int j = i + 1; j < arr.length; j++) {
                    if (arr[j] < arr[i]) {
                        swap(arr, i, j);
                    }
                }
            }
        }
        
        public static void swap(int[] arr, int i, int j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    🌴二、冒泡排序

    1. 原理

    比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

    2. 时间复杂度

    O(n²)

    3.代码实现

    import java.util.Arrays;
    public class Example2 {
        public static void main(String[] args) {
            int[] arr = {5, 7, 2, 6, 4, 1, 3, 9, 8};
            BubbleSort(arr);
            System.out.println(Arrays.toString(arr));
        }
    
        public static void BubbleSort(int[] arr) {
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j+1] > arr[j]) {
                        swap(arr, j+1, j);
                    }
                }
            }
        }
    
        public static void swap(int[] arr, int i, int j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    🌴三.插入排序

    1.原理

    待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序

    2. 时间复杂度

    O(n²)

    3.代码实现

    import java.util.Arrays;
    
    public class Example3 {
        public static void main(String[] args) {
            int[] arr = {5, 7, 2, 6, 4, 1, 3, 9, 8};
            InsertionSort(arr);
            System.out.println(Arrays.toString(arr));
        }
    
        public static void InsertionSort(int[] arr) {
            if (arr == null || arr.length < 2) {
                return;
            }
            for (int i = 1; i < arr.length; i++) {
                for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
                    swap(arr, j, j + 1);
                }
            }
        }
    
        public static void swap(int[] arr, int i, int j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    🌴总结

    文章中代码的编写使用的都是Java基础知识,多加练习熟能生巧。
    本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


  • 相关阅读:
    学完基础的verilog语言后如何进一步学习fpga
    php服装商城网站毕业设计源码241505
    基于springboot实现二手交易平台管理系统演示【项目源码】分享
    vue实现无感刷新token
    Android问题笔记 - kotlin中使用Java接口,报错Parameter specified as non-null is null 快速解决
    【python】都2022年不会还有人不会在电脑桌面上养宠物吧~
    ADO.NET实体数据模型-DatabaseFirst
    PostgreSQL13 安装
    【Python】高级变量类型
    Java接口和抽象类的区别
  • 原文地址:https://blog.csdn.net/weixin_54620350/article/details/132643254