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基础知识,多加练习熟能生巧。

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


相关推荐
渡之6 分钟前
GRiM-Net 深度解析 | 无人机 GNSS 拒止场景下两阶段跨视角视觉定位框架
深度学习·算法·动态规划·无人机
测试仪器廖生1359025638526 分钟前
罗德与施瓦茨 FSP13频谱分析仪FSP30
网络·人工智能·算法
happymaker062628 分钟前
LeetCodeHot100——560.和为K的子数组
算法
阿狸猿34 分钟前
论微服务架构及其应用
java·微服务·架构
dtq04241 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
郭梧悠1 小时前
Hash算法入门Hash冲突解决方案
算法·哈希算法
程序员黑豆1 小时前
Java中的字符串【AI全栈开发】
java
namexingyun1 小时前
开源前端生态如何成为 AI UI 生成的“燃料“:shadcn/ui、Tailwind CSS、Storybook 技术价值全解剖
java·前端·人工智能·python·ui·开源·ai编程
洛水水2 小时前
【力扣100题】81.寻找两个正序数组的中位数
数据结构·算法·leetcode
终将老去的穷苦程序员2 小时前
基于SpringBoot的餐饮管理系统
java·spring boot·后端