基础算法-冒泡排序,插入排序,选择排序

本文图片来在极客时间-王争老师的《数据结构与算法之美》

本文源码地址>>>GitHub

冒泡排序(BubbleSort)

算法说明

每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。

例如:要对一组数据 4,5,6,3,2,1,从小到大进行排序。第一次冒泡操作的详细过程如下:
在这里插入图片描述

步骤说明

假设要对N个元素进行冒泡排序,执行的步骤如下:

  1. 比较相邻的元素。如果前者>后者,则交换两者的位置。
  2. 按顺序对每一组相邻元素做步骤1的工作,直到结束(需要执行了N-1次比较工作)。
  3. 以此类推,执行N-1次的步骤2,即可完成冒泡排序。

JAVA代码

package cn.hgy.data.algorithm;

package cn.hgy.data.algorithm;

/**
 * 冒泡排序
 * <pre>
 *     算法介绍:遍历待排序的数,每次选出最大的数添加到合适的位置
 *     时间复杂度:最优-O(n),最坏-O(n^2),
 * </pre>
 *
 * @author guoyu.huang
 * @version 1.0.0
 */
public class BubbleSort {
   

    public static void main(String[] args) {
   
        int[] arrays = {
   4, 5, 6, 3, 2, 1};
        int[] sortArrays = sort(arrays);

        for (int i = 0; i < sortArrays.length; i++) {
   
            System.out.print(sortArrays[i] + " ");
        }
    }

    /**
     * 排序
     * <pre>
     *     两个优化点:
     *     1. 如果进行一轮的比较遍历后,没有发生过替换操作,则表示当前已是有序状态
     *     2. 每进行一轮比较遍历后,在进行第i轮之后,数组尾部的n-i到n的数是有序的,无需再判断
     * </pre>
     *
     * @param content
     */
    public static int[] sort(int[] content) {
   

        for
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑾析编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值