漫画:冒泡排序最牛逼的状态!

简介: 漫画:冒泡排序最牛逼的状态!

微信图片_20220217181001.jpg

基础版


public static int[] bubbleSort(int[] array) {
    int temp;
    if(array.length == 0) return array;
    for (int i = 0; i<array.length;i++){
        for(int j = 0;j<array.length-1-i;j++){
            if(array[j+1] < array[j]){
               temp = array[j+1];
               array[j+1] = array[j];
               array[j] = temp;
            }
        }
    }
    return array;
}


微信图片_20220217181017.jpg



微信图片_20220217181047.jpg





微信图片_20220217181053.png




微信图片_20220217181058.jpg

进阶1


public static int[] bubbleSort2(int[] array) {
    int temp;
    boolean flag = true; //定义一个标志
    if(array.length == 0) return array;
    int k = array.length;
    while (flag) {
        flag = false;
            for(int j = 1;j<k;j++){
                if(array[j] < array[j-1]){
                    //交换
                    temp = array[j-1];
                    array[j-1] = array[j];
                    array[j] = temp;
                    flag = true; //如果有数据交换,那么将flag设置为true,代表还有数据未排序
                }
            }
    k--; //每次排序的最后一个元素都是当前排序的最大值,所以需要--
    }
    return array;
   }


微信图片_20220217181103.jpg


先给出一个冒泡排序的动画图,相信根据这个图来大家会非常容易理解。


微信图片_20220217181108.gif


除了刚刚小k写的算法,我们还可以做进一步的优化。如果有100个数的数组,仅前面10个无序,后面90个都已排好序且都大于前面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小于10,且这个位置之后的数据必定已经有序了,记录下这位置,第二次只要从数组头部遍历到这个位置就可以了。



进阶2


public static int[] bubbleSort3(int[] array) {
    int temp;
    if(array.length == 0) return array;
    int flag = array.length;
    int k ;
    while (flag>0) {
        k = flag;
        flag = 0;
        for(int j = 1;j<k;j++){
            if(array[j] < array[j-1]){
                //交换
                temp = array[j-1];
                array[j-1] = array[j];
                array[j] = temp;
                flag = j;   //记录非排序列中的最后一个值
            }
        }
    }
    return array;
}


微信图片_20220217181112.jpg


文终


相关文章
|
22小时前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
23小时前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
22小时前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习(11)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊-除了会黑我家鸽鸽还会干嘛?!!!
|
23小时前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
算法 搜索推荐
三大基础排序算法——我欲修仙(功法篇)
三大基础排序算法——我欲修仙(功法篇)
155 0
|
算法 测试技术
算法 | 高楼丢鸡蛋(源自谷歌面试题)| 刷题打卡
算法 | 高楼丢鸡蛋(源自谷歌面试题)| 刷题打卡
146 0
算法 | 高楼丢鸡蛋(源自谷歌面试题)| 刷题打卡
算法每日一题——第七天——消除游戏
算法每日一题——第七天——消除游戏
算法每日一题——第七天——消除游戏
|
搜索推荐 算法 Shell
【漫画】七种最常见的排序算法(动图版)(中)
【漫画】七种最常见的排序算法(动图版)
164 1
【漫画】七种最常见的排序算法(动图版)(中)