冒泡排序的过程:

重复地走访要排序的元素,依次比计较两个相邻的元素,如果他们的顺序错误就把他们交换过来。走访元素的工作室重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

简单说,就是比较相邻的两个元素,将值大的元素交换到右边

是否稳定

如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式,因此,冒泡排序是一种稳定排序算法

算法

N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数

时间复杂度

1,如果我们的数据正序,只需要走一趟即可完成排序,所需的比较次数C和记录移动次数M均达到最小值,即:C min=n-1; M min = 0;所以,最好的时间复杂度为O(n)

2,如果很不幸,我们的数据是反序的,则需要进行n-1趟排序,每趟排序要进行n-i次比较(1<=i<=n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:


所以,最终的时间复杂度为:O(n^2)

冒泡排序的示例

[2  4  3  1  6  5]         初始状态序列
[2  3  1  4  5][6]         第一次冒泡结束
[2  1  3  4][5  6]         第二次冒泡结束
[1  2  3][4  5  6]         第三次冒泡结束
[1  2][3  4  5  6]         第四次冒泡结束
[1  2  3  4  5  6]         第五次冒泡结束

冒泡排序常规代码

void bubble_sort(int[] arr,int len) {//一定要记住判断边界条件if(arr == null || len < 2) {return;}for(int i = 0;i < len-1; i++) {//第i趟比较for(int j = 0; j < len -1 -i; i++){//开始进行比较,如果前面值比后面值大,那就交换位置if (arr[j] > arr[j+1]) {int t = arr[j];arr[j] = arr[j+1];arr[j+1] = t;}}}System.out.println("最终得到的数组是:")for (int k = 0; k< arr.length;k++) {System.out.println(arr[k]+"");}
}

如果,设置一个标志位,不再进行数据交换,说明已经排序完成,则无需再进行交换

冒泡排序的简单优化代码:

void bubble_sort(int[] arr) {if(arr == null || arr.length < 2) {return;}int flag = 0;for(int i = 0; i < arr.length; i++) {for( int j = 0; j < arr.length -1 -i; j++) {if(arr[j] > arr[j+1]) {int t = arr[j];arr[j] = arr[j+1];arr[j+1] = t;flag = 0; //发生交换,标志位置为0}}}System.out.println("第%d遍最终结果:",i+1);for(int count : list) {System.out.println(count);}System.out.println("");if (flag == 1) {return;}
}

冒泡排序 小白学demo_day2相关推荐

  1. 零基础小白学Java难度大不大

    零基础小白学Java难度大不大?有很多人都是非常关心这个问题的,如今java在IT互联网行业的快速发展,引起了很多人的注意,那么,哪些人适合入行Java?零基础学习Java难度大吗?下面,小编就为大家 ...

  2. 【小白学PyTorch】10.pytorch常见运算详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 <<小白学PyTorch>> 参考目录: ...

  3. 【小白学PyTorch】4.构建模型三要素与权重初始化

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章目录: 1 模型三要素 2 参数初始化 3 完整运行代码 4 ...

  4. pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构

    [机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...

  5. 小白学python买什么书-书单狗 篇一:小白学Python,到底要看多少书?

    书单狗 篇一:小白学Python,到底要看多少书? 2020-07-06 10:52:23 130点赞 1939收藏 76评论 比起Linux,Python的学习资料真的是浩如烟海,即使对于小白来讲, ...

  6. 从小白到精通python要多久-零基础如何学Python?小白学Python需要多久?

    目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?下面,小编就与大家来看一下! 零基础的新手应 ...

  7. python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. 小白学数据分析--回归分析在游戏人气分析的应用探索

    小白学数据分析--回归分析在游戏人气分析的应用探索 昨天简单说了一下相关分析在充值购买失衡方面的应用,今天就接着昨天的话题,说一下回归分析(Regression  Analysis),回归分析是研究一 ...

  9. 编程小白学python知乎周刊_在知乎上学 Python - 入门篇

    写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...

最新文章

  1. sed及awk显示指定行内容
  2. 利用递归、迭代解决斐波那契数列问题与汉诺塔难题
  3. 副部长和消费者拼单 拼多多发放农民丰收节交易会消费券
  4. 传值调用 与传地址调用(传引用)
  5. 百度百科做起来也不难
  6. H5上传文件又双叒叕开测了!
  7. 中小企业数智化转型,这个百万级客户市场差点被遗忘
  8. 071120 sunny
  9. 库存管理系统开发过程
  10. 通达信经典指标组合图文详解
  11. echart 三维可视化地图_在 ECharts GL 中绘制三维地图
  12. IDEA文件编码格式修改为UTF-8
  13. TIA Protal 精智面板中的动画外观
  14. Long memory is important: A test study on deep-learning based car-following model
  15. 光纤加速度传感器对高速列车受电弓监测
  16. VR看房:全景图和移动切换的实现
  17. jsp:forward标签介绍
  18. Unreal 入门-AO贴图
  19. jQuery如何向HTML添加指定的内容
  20. 题材丰富 医药板块初露峥嵘

热门文章

  1. vasp软件_量子力学分子动力学软件包-VASP
  2. Linux 中内核级加强型火墙的管理
  3. php yanzhengm,ThinkPHP 在使用M方法(不创建模型类)时实现自动验证与自动填充
  4. 三只松鼠:阿里云数据中台基座上的多渠道、多业态生长
  5. 马云、马斯克同台谈AI:人工智能拯救世界?
  6. 阿里工程师如何叫外卖?99%的人猜不到
  7. 学习Java软件开发该从何入手
  8. 【写实与风格化】技术概述
  9. 科技感的动态设计方法-1
  10. 为什么我要用C写游戏 适合自己的才是最好的