数据结构之冒泡、选择排序

本文探讨了内部排序中的冒泡排序和选择排序,这两种排序算法在数据量较小的情况适用,平均和最坏时间复杂度相同。冒泡排序较稳定,通过逐轮比较和交换实现排序;选择排序则在每轮中选取最小元素并交换位置,最终得到有序数组。文中附带了两种排序的代码实现。
摘要由CSDN通过智能技术生成

冒泡排序和选择排序都属于内部排序,这两种排序方式的平均时间复杂度和最坏时间复杂度都是O(n^{2}),并且他们都适用于数据比较少的情况下使用,不同的是冒泡排序比选择排序更稳定。下面分别聊聊这两种排序方式吧。

一、冒泡排序

冒泡排序是对待排序序列下标有小到大开始遍历比较,若这两个元素逆序,则交换,不逆序则继续比较一下一个,比较数组长度-1趟即可。若是某一趟没有交换,则证明这个数组序列有序,退出即可。代码如下:

/**
 * 冒泡排序:每一趟都只是比较相邻两个数的大小,再按照给定规则交换
 * 优化:要是某一趟中没有进行数据交换,证明这个数组是有序的,不用在进行排序,
 * 设置flag标志位判断是否进行了交换
 */
public class BubbleSort {
    public static void main(String[] args) {
//        int[] arr = {3,9,-1,10,-2};
        int[] arr = {1,2,3,4,5,6};
        BubbleSort bubbleSort = new BubbleSort();
        bubbleSort.sort(arr);
        bubbleSort.print(arr);
    }
    private void sort(int[] arr){
        int temp =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值