• 深入浅出的排序算法-冒泡排序


    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。 
    本篇文章同步微信公众号 

    欢迎大家关注我的微信公众号:「醉翁猫咪」 



    今天讲讲排序,说要讲就讲,走起

    冒泡排序:

    什么是冒泡排序呢?(bubble sort)


    你是怎么理解冒泡排序算法的呢,有什么可以一下懂得?


    为什么这个排序要叫冒泡呢?为什么不叫其他名词呢?其实这个取名是根据排序算法的基本思路命名的,见名知意,冒泡排序,就是想泡泡在水里一样,在水里大的泡泡先浮出水面,就是大的先排出来,最小的最慢排出。


    冒泡排序,是对排序的各个元素从头到尾依次进行相邻的大小比较,比如你是队长,在你的面前有一排人,你要将其进行排序,依次按照从小到大排序。


    怎么理解最大的值被排除,你是队长,你对面前的一群人看不惯,进行排序,从左到右开始,第一个和第二个进行比较,大的那个就被挑出来,与第三个进行比较,接下来就是依次按照这个方法比较,就能把那个最大的值,最高的给挑出来不是,这就是第一轮的比较。


    接下来,最大的就不用跟他比较了,上面所述,在排序时,你面前的人,是不能乱动的,一旦比较哪个大,两者就换位,如果第一比第二个小,就是第二个大时,两者不用换位,第二个就与第三个进行比较。


    依照这个方法,两两比较,大的都被排到了最后,那么一旦排完,是不是都依照从小到大,(从低到高)的顺序在你面前排好了。


    代码示例


    我们用索引下标来解释


    //第一轮
    for(int index=0;index < arr.length-1; index++){
    //相邻两个比较
     if(arr[index] > arr[index+1]){
       int temp = arr[index];
       arr[index] = arr[index+1];
       arr[index+1] = temp;
     }
    }
    
    print(arr);
    
    for(int index=0;index < arr.length-2;index++){
    //这里arr.length-2,为什么比上一次多减了1呢?
    //因为第一轮,把最大的排出来了,就不用比较了,少了一个人
     if(arr[index] > arr[index+1]){
       int temp = arr[index];
       arr[index] = arr[index+1];
       arr[index+1] = temp;
     }
    }
    
    print(arr);
    
    for(int index=0;index < arr.length-3;index++){
     if(arr[index]>arr[index+1]){
       int temp = arr[index];
       arr[index] = arr[index+1];
       arr[index+1] = temp;
     }
    }
    
    print(arr);

    优化

    for(int num=1;num<arr.length;num++){
    
     for(int index=0;index<arr.length-num;index++){
    
       if(arr[index]>arr[index+1]){
         int temp = arr[index];
         arr[index] = arr[index+1];
         arr[index+1] = temp;
       }
     }
    }
    如果觉得不错,可以分享哦,你的鼓励是我最大的进步!

    从入门到熟悉!

    坚决不放弃!



  • 相关阅读:
    sniffer 和 debug flow
    如何认识TOS----DSCP 对照表
    NAT alg 和 ASPF
    使用refind引导多系统
    Backdooring a OS VM
    exit(0)与exit(1),return三者区别(详解)
    Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)
    2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
    高斯消元法(Gauss Elimination)【超详解&模板】
    2015 计蒜之道 初赛(4)爱奇艺的自制节目(枚举 贪心)
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932728.html
Copyright © 2020-2023  润新知