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

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

文章目录

  • 前言
  • 一、选择排序
    • 1.原理
    • 2.时间复杂度
    • 3.代码实现
  • 二、冒泡排序
    • 1. 原理
    • 2. 时间复杂度
    • 3.代码实现
  • 三.插入排序
    • 1.原理
    • 2. 时间复杂度
    • 3.代码实现
  • 总结


前言

本文内容是关于选择排序、冒泡排序、插入排序的,代码编写使用的是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. 时间复杂度

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.原理

待排序的元素中,假设前面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;
    }
}

总结

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


你可能感兴趣的:(Java算法,java,排序算法,算法)