冒泡排序 小白学demo_day2
冒泡排序的过程:
重复地走访要排序的元素,依次比计较两个相邻的元素,如果他们的顺序错误就把他们交换过来。走访元素的工作室重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
简单说,就是比较相邻的两个元素,将值大的元素交换到右边
是否稳定
如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式,因此,冒泡排序是一种稳定排序算法
算法
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相关推荐
- 零基础小白学Java难度大不大
零基础小白学Java难度大不大?有很多人都是非常关心这个问题的,如今java在IT互联网行业的快速发展,引起了很多人的注意,那么,哪些人适合入行Java?零基础学习Java难度大吗?下面,小编就为大家 ...
- 【小白学PyTorch】10.pytorch常见运算详解
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 <<小白学PyTorch>> 参考目录: ...
- 【小白学PyTorch】4.构建模型三要素与权重初始化
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章目录: 1 模型三要素 2 参数初始化 3 完整运行代码 4 ...
- pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构
[机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...
- 小白学python买什么书-书单狗 篇一:小白学Python,到底要看多少书?
书单狗 篇一:小白学Python,到底要看多少书? 2020-07-06 10:52:23 130点赞 1939收藏 76评论 比起Linux,Python的学习资料真的是浩如烟海,即使对于小白来讲, ...
- 从小白到精通python要多久-零基础如何学Python?小白学Python需要多久?
目前市场上对于Python开发人才的需求与日递增,所以很多人都会选择去学Python.那如果是零基础又该如何学Python呢?小白学Python需要多久呢?下面,小编就与大家来看一下! 零基础的新手应 ...
- python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学数据分析--回归分析在游戏人气分析的应用探索
小白学数据分析--回归分析在游戏人气分析的应用探索 昨天简单说了一下相关分析在充值购买失衡方面的应用,今天就接着昨天的话题,说一下回归分析(Regression Analysis),回归分析是研究一 ...
- 编程小白学python知乎周刊_在知乎上学 Python - 入门篇
写在前面 本文对知乎上关于Python入门方面的问答.文章.专栏做了一定的收集和整理,希望对各位Python学习者能有帮助,至少可以节省大家一点时间. 这一篇主要针对的是零基础或初学Python,包括 ...
最新文章
- sed及awk显示指定行内容
- 利用递归、迭代解决斐波那契数列问题与汉诺塔难题
- 副部长和消费者拼单 拼多多发放农民丰收节交易会消费券
- 传值调用 与传地址调用(传引用)
- 百度百科做起来也不难
- H5上传文件又双叒叕开测了!
- 中小企业数智化转型,这个百万级客户市场差点被遗忘
- 071120 sunny
- 库存管理系统开发过程
- 通达信经典指标组合图文详解
- echart 三维可视化地图_在 ECharts GL 中绘制三维地图
- IDEA文件编码格式修改为UTF-8
- TIA Protal 精智面板中的动画外观
- Long memory is important: A test study on deep-learning based car-following model
- 光纤加速度传感器对高速列车受电弓监测
- VR看房:全景图和移动切换的实现
- jsp:forward标签介绍
- Unreal 入门-AO贴图
- jQuery如何向HTML添加指定的内容
- 题材丰富 医药板块初露峥嵘