冒泡排序的理解

文章参考:图解冒泡排序及优化
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)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容