首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【JavaSE专栏31】数组排序的三剑客:冒泡排序、选择排序和插入排序

【JavaSE专栏31】数组排序的三剑客:冒泡排序、选择排序和插入排序

作者头像
Designer 小郑
发布2023-08-02 08:03:42
发布2023-08-02 08:03:42
41400
代码可运行
举报
文章被收录于专栏:跟着小郑学JAVA跟着小郑学JAVA
运行总次数:0
代码可运行

作者主页Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长! 主打方向:Vue、SpringBoot、微信小程序

本文对 Java 中冒泡排序、选择排序和插入排序进行了介绍,并给出了样例代码。


一、冒泡排序

冒泡排序是一种简单的排序算法,通过重复比较相邻的元素并交换位置,使得较大的元素逐渐 冒泡 到数组的末尾

以下是 Java 语言实现冒泡排序的样例代码:

代码语言:javascript
代码运行次数:0
运行
复制
public class BubbleSort {
    public static void bubbleSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n-1; i++) {
            for (int j = 0; j < n-i-1; j++) {
                if (arr[j] > arr[j+1]) {
                    // 交换arr[j]和arr[j+1]的位置
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
  
    public static void main(String[] args) {
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(arr);
        System.out.println("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

该代码首先定义了一个bubbleSort方法,接受一个整型数组作为参数,并对该数组进行冒泡排序。

然后在main方法中,创建一个示例数组并调用bubbleSort方法进行排序,最后输出排序后的数组。


二、选择排序

选择排序是一种简单直观的排序算法,它的基本思想是将待排序的序列分成已排序和未排序两部分,每次从未排序的部分中选择最小(或最大)的元素,将其放到已排序部分的末尾,直到所有元素都排序完成。

以下是使用Java实现选择排序的代码:

代码语言:javascript
代码运行次数:0
运行
复制
public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            swap(arr, i, minIndex);
        }
    }

    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {64, 25, 12, 22, 11};
        selectionSort(arr);
        System.out.println("排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

该代码会输出以下结果:

代码语言:javascript
代码运行次数:0
运行
复制
排序后的数组:
11 12 22 25 64

三、插入排序

在计算机科学中,排序是将一组元素按照特定的规则重新排列的过程。

排序算法可以按照不同的规则来排序,例如按照数字大小、字母顺序等。

排序算法的应用非常广泛,可以用于数据处理、搜索算法优化等领域。

以下是一个使用 Java 实现的插入排序代码样例。

代码语言:javascript
代码运行次数:0
运行
复制
public class InsertionSort {
    public static void insertionSort(int[] arr) {
        int n = arr.length;
        for (int i = 1; i < n; ++i) {
            int key = arr[i];
            int j = i - 1;
  
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j = j - 1;
            }
            arr[j + 1] = key;
        }
    }
  
    public static void main(String[] args) {
        int[] arr = { 12, 11, 13, 5, 6 };
  
        System.out.println("排序前的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
  
        insertionSort(arr);
  
        System.out.println("
排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

以上代码使用插入排序算法对一个整数数组进行排序。

插入排序的基本思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,在已排序部分找到合适的位置插入,重复这个步骤直到整个数组有序

插入排序的应用场景包括但不限于以下三类。

  1. 对小规模数据进行排序,因为插入排序的时间复杂度为
O(n^2)

,对于大规模数据效率较低。

  1. 部分数据已经有序或接近有序,插入排序对此类数据的排序效果较好。
  2. 稳定性要求较高的场景,插入排序是一种稳定的排序算法,即相等元素的相对位置不会改变。

提示:实际使用时应根据具体场景选择更适合的排序算法。


四、总结

本文对 Java 中冒泡排序、选择排序和插入排序进行了介绍,并给出了样例代码。在下一篇博客中,将讲解 Java 中函数定义、调用和主函数的语法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、冒泡排序
  • 二、选择排序
  • 三、插入排序
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档