博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AJPFX对选择和冒泡两种排序的理解
阅读量:7031 次
发布时间:2019-06-28

本文共 917 字,大约阅读时间需要 3 分钟。

冒泡排序和直接选择排序都是排序中比较简单和容易实现的算法,先简单说说两者的区别:先以按照元素从小到大为:

冒泡排序:将相邻元素两两比较,如果有比较大的,就把比较大的放在右边,这样的结果就是一轮排序完毕后最大的数直接被放在了最右边,然后从左边第二个数开始比较,以此类推,直到倒数第二个数为止。
选择排序:与冒泡排序不同,选择排序采取的是从第二位开始检查,如果发现有数最小就记下该数的为止,等到检查完毕然后再把该数和第一位交换,所以选择排序每一轮可能只要一次交换,而冒泡可能要交换很多次。两者比较的次数相同,因此外层循环是一样的。
具体来说,我们以数组的排序为例
arr[]={4,3,2,1} ,其中arr[0]=4,arr[1]=3,arr[2]=2,arr[3]=1;
冒泡排序的代码是:以上是老师提供的代码
for(int i=0;i<arr.length-1;i++){//外循环表示比较次数,要比较数组长度-1次
for(int j=0;j<arr.length-i-1;j++){//内层循环表示两两比较的次数,因为每一次比较都有一个最大值被放在右边,因此每次只需要比较数组长度-i即可for(arr[j]>arr[j+1]){//把大的值放右边
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=arr[j]
}
}
}
冒泡排序是对arr[0]到arr.length-i-1进行排序,这是一种内排序,范围是逐渐缩小的

选择排序

for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
for(arr>arr[j]){//把小的值放在左边
int temp=arr;
arr=arr[j];
arr[j]=temp

}

}
选择排序比起冒泡排序来说提高了一些效率,顺便说1下冒泡排序最后一位不需要比较,选择排序从i+1位开始比较,最后一位需要比较

选择排序是a与a[i+1]到arr.length进行比较,这是一种外部排序

转载于:https://blog.51cto.com/14314113/2397085

你可能感兴趣的文章
[MetalKit]21-What's-new-in-graphics-and-games-at-WWDC-2016
查看>>
html2canvas在vue下的巨坑
查看>>
从设计师和开发的角度使用 lottie
查看>>
iOS之自定义tabBar
查看>>
Spring boot学习(三) Spring boot整合mybatis
查看>>
Redux 源码深度解析(附带视频1月14号上传)
查看>>
理解webpack原理,手写一个100行的webpack
查看>>
Node.js & Express 项目基本搭建
查看>>
掌握 MySQL 这 19 个骚操作,效率至少提高3倍
查看>>
【跃迁之路】【744天】程序员高效学习方法论探索系列(实验阶段501-2019.3.6)...
查看>>
用于大数据测试、学习的测试数据
查看>>
Software System Analysis and Design | 1
查看>>
JavaScript函数式编程,真香之组合(一)
查看>>
JavaScript链式调用实例浅析
查看>>
报表没完没了怎么办? | 润乾集算器提效报表开发
查看>>
记一次Hexo迁移
查看>>
RESTful API 中的 Status code 是否要遵守规范
查看>>
第十一天-《企业应用架构模式》-对象-关系行为模式
查看>>
[spring boot] jdbc
查看>>
新的开始!
查看>>