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

不爱生姜不吃醋

如果本文有什么错误的话欢迎在评论区中指正

与其明天开始,不如现在行动!

文章目录


🌴前言

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


🌴一、选择排序

1.原理

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

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

2.时间复杂度

O(n²)

3.代码实现

java 复制代码
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. 时间复杂度

O(n²)

3.代码实现

java 复制代码
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.原理

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

2. 时间复杂度

O(n²)

3.代码实现

java 复制代码
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;
    }
}

🌴总结

文章中代码的编写使用的都是Java基础知识,多加练习熟能生巧。

本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


相关推荐
良月澪二14 分钟前
CSP-S 2021 T1廊桥分配
算法·图论
极客先躯33 分钟前
高级java每日一道面试题-2024年10月3日-分布式篇-分布式系统中的容错策略都有哪些?
java·分布式·版本控制·共识算法·超时重试·心跳检测·容错策略
夜月行者1 小时前
如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
java·后端·ssm
程序猿小D1 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
wangyue41 小时前
c# 线性回归和多项式拟合
算法
潘多编程1 小时前
Java中的状态机实现:使用Spring State Machine管理复杂状态流转
java·开发语言·spring
&梧桐树夏1 小时前
【算法系列-链表】删除链表的倒数第N个结点
数据结构·算法·链表
QuantumStack1 小时前
【C++ 真题】B2037 奇偶数判断
数据结构·c++·算法
今天好像不上班1 小时前
软件验证与确认实验二-单元测试
测试工具·算法
_阿伟_2 小时前
SpringMVC
java·spring