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

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


相关推荐
aaaameliaaa3 小时前
指针之总结
c语言·笔记·算法
宵时待雨3 小时前
优选算法专题9:哈希表
数据结构·算法·散列表
gwf2163 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
码智社3 小时前
Java实现RSA密钥生成、加密解密、加签验签
java
wear工程师3 小时前
ThreadLocal 在线程池里为什么会串数据:别只会答内存泄漏
java·后端
Iruoyaoxh3 小时前
栈和队列~
java·开发语言
审小匠OpenCPAi3 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
noipp3 小时前
推荐题目:洛谷 P6231 [JSOI2013] 公交系统
c语言·数据结构·c++·算法·游戏·洛谷·luogu
码上上班4 小时前
docker课程
java·docker·容器
c238564 小时前
C/C++每日一练6
c语言·c++·算法