美文网首页
冒泡排序的理解

冒泡排序的理解

作者: 冰楓紫憶 | 来源:发表于2021-06-23 16:47 被阅读0次

    文章参考:图解冒泡排序及优化
    dart冒泡排序

    void main(){
      var list = [23,16,19,44,7,10,12,9,88];
      
      for(var i = 0; i< list.length;i++){
        //是否已经有序的标记,默认有序
        bool isSort = true;
        for(var j=0;j<list.length-i-1;j++){
           //升序排序>,降序排序<
          if(list[j]>list[j+1]){
            int temp = list[j];
            list[j]=list[j+1];
            list[j+1]= temp;
            //发生元素交换,序列仍是无序状态
            isSort = false;
        }
          if(isSort){
            break;
          }
      }
      }
      for(var i in list){
        print(i);
      }
      
      print("==================");
      list.forEach((i)=>print(i));
    }
    

    冒泡排序:每次就是将相邻的两个数进行比较,然后交换位置,每一轮(最外层for执行一遍)之后都能够将最大(最小)的数字冒泡到了最右边


    image.png

    在经过第一轮交换后,最大的数 9 冒泡到了最右边


    image.png
    到此为止,所有元素都是有序的了,这就是冒泡排序的整体思路。

    冒泡排序是一种稳定排序,值相等的元素并不会打乱原本的顺序。由于该排序算法的每一轮都要遍历所有元素,总共遍历(元素数量-1)轮,所以平均时间复杂度是O(n2)。

    相关文章

      网友评论

          本文标题:冒泡排序的理解

          本文链接:https://www.haomeiwen.com/subject/lwjbyltx.html