博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java冒泡排序与选择排序的区别
阅读量:4331 次
发布时间:2019-06-06

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

前些天误把冒泡排序当作选择排序,幸亏博友及时指正。今天就来说说这两者的区别。

冒泡排序

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

代码如下:

1 public class nums { 2     public static void main(String[] args){ 3         int []nums = {5,4,3,2,1}; 4         for(int i = 0; i < nums.length; i++){ 5             for(int j = 0; j < nums.length-i-1; j++){ 6                 if(nums[j] > nums[j+1]){ 7                     int temp = nums[j]; 8                     nums[j] = nums[j+1]; 9                     nums[j+1] = temp;10                 }11             }12             for(int x = 0;x < nums.length;x++){13                  System.out.print(nums[x]+",");14              }15             System.out.print("\n");16         }17     }18 }

每一轮比较后的输出如下:

1 4,3,2,1,5,2 3,2,1,4,5,3 2,1,3,4,5,4 1,2,3,4,5,5 1,2,3,4,5,

从输出中可以很清楚的明白冒泡排序的算法流程。

选择排序

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

代码如下:

1 public class nums { 2     public static void main(String[] args){ 3         int []nums = {5,4,3,2,1}; 4         for(int i = 0; i < nums.length; i++){ 5             for(int j = i+1; j < nums.length; j++){ 6                 if(nums[i] > nums[j]){ 7                     int temp = nums[i]; 8                     nums[i] = nums[j]; 9                     nums[j] = temp;10                 }11             }12             for(int x = 0;x < nums.length;x++){13                  System.out.print(nums[x]+",");14              }15             System.out.print("\n");16         }17     }18 }

从代码中可以看出每轮比较中,nums[i]和数组中的每个元素都有作比较。

每一轮比较后的输出如下:

1 1,5,4,3,2,2 1,2,5,4,3,3 1,2,3,5,4,4 1,2,3,4,5,5 1,2,3,4,5,

从输出结果中还是很容易看出它与冒泡排序在算法上的区别。

 

非常感谢博友 的指正,不然我可能永远都不知道我是错的。若有错误之处还望各位不吝赐教!

 

转载于:https://www.cnblogs.com/dimdusk/archive/2013/05/20/3088825.html

你可能感兴趣的文章
POJ 3267 The Cow Lexicon(动态规划)
查看>>
设计原理+设计模式
查看>>
音视频处理
查看>>
tomcat 7服务器跨域问题解决
查看>>
前台实现ajax 需注意的地方
查看>>
Jenkins安装配置
查看>>
个人工作总结05(第二阶段)
查看>>
Java clone() 浅拷贝 深拷贝
查看>>
深入理解Java虚拟机&运行时数据区
查看>>
02-环境搭建
查看>>
spring第二冲刺阶段第七天
查看>>
搜索框键盘抬起事件2
查看>>
阿里百川SDK初始化失败 错误码是203
查看>>
透析Java本质-谁创建了对象,this是什么
查看>>
BFS和DFS的java实现
查看>>
关于jquery中prev()和next()的用法
查看>>
一、 kettle开发、上线常见问题以及防错规范步骤
查看>>
eclipse没有server选项
查看>>
CRC码计算及校验原理的最通俗诠释
查看>>
QTcpSocket的连续发送数据和连续接收数据
查看>>