Java 冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到 没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

  冒泡排序算法的运作如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡排序的过程图:

代码:

[java] view plain copy

print?

  1. public class BubbleSort{
  2. public static void main(String[] args){
  3. int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
  4. for (int i = 0; i < score.length -1; i++){    //最多做n-1趟排序
  5. for(int j = 0 ;j < score.length - i - 1; j++){    //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
  6. if(score[j] < score[j + 1]){    //把小的值交换到后面
  7. int temp = score[j];
  8. score[j] = score[j + 1];
  9. score[j + 1] = temp;
  10. }
  11. }
  12. System.out.print("第" + (i + 1) + "次排序结果:");
  13. for(int a = 0; a < score.length; a++){
  14. System.out.print(score[a] + "\t");
  15. }
  16. System.out.println("");
  17. }
  18. System.out.print("最终排序结果:");
  19. for(int a = 0; a < score.length; a++){
  20. System.out.print(score[a] + "\t");
  21. }
  22. }
  23. }

参考资料:http://zh.wikipedia.org/wiki/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F

执行结果如下:

[html] view plain copy

print?

  1. 第1次排序结果:69  75  87  89  90  99  100 67
  2. 第2次排序结果:75  87  89  90  99  100 69  67
  3. 第3次排序结果:87  89  90  99  100 75  69  67
  4. 第4次排序结果:89  90  99  100 87  75  69  67
  5. 第5次排序结果:90  99  100 89  87  75  69  67
  6. 第6次排序结果:99  100 90  89  87  75  69  67
  7. 第7次排序结果:100 99  90  89  87  75  69  67
  8. 最终排序结果:100  99  90  89  87  75  69  67
时间: 2024-08-12 19:57:58

Java 冒泡排序的相关文章

java冒泡排序Bubble Sort算法代码

java冒泡排序Bubble Sort算法代码 下载代码地址:http://www.zuidaima.com/share/1550463269096448.htm package com.zuidaima.util; /** *冒泡排序 *@paramsrc待排序数组 *@author www.zuidaima.com */ void doBubbleSort(int[] src) { int len=src.length; for(int i=0;i<len;i++) { for(int j=

java冒泡排序及优化

java冒泡排序及优化 import java.util.Arrays; public class TestBubbleSort3 { public static void main(String[] args) { int[] a = {23,45,2,86,56,34,234,54,342}; getBubbleSortResult(a); } public static void getBubbleSortResult(int[] a) { for(int j =0;j<a.length-

java冒泡排序和快速排序的分析

说来惭愧,昨天面试的时候遇到快速排序的笔试题没答上来.搞java的长期接触的是业务方面的东西,特别是web方向的java,久而久之在学校里面学的最基本的一些东西给忘记了.网上搜索了这两种算法,基本都是当年书本的解释,个人不是很喜欢.现将自身强化后的解释描述出来,加强记忆,最近有面试的同志不妨看看. 1.冒泡排序 书本上的基本理念是左边元素跟右侧元素一个个对比,有更小的就交换. 我将此分解为: a.将数组的最小元素放在左边: b.对右边做递归: 这个比较简单,实现a的代码: // a.将数组的最小

过三关 Java冒泡排序选择排序插入排序小练习

材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选择用插入排序法,来进行排序. 测试类: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //功能:猴子排序 public class MonkeySelect {

java 冒泡排序 经典算法题

//        冒泡排序:经典算法题.//        有一组数字 2,10,8,20,11,把这组数按照从大到小的顺序排列出来.20,11,10,8,2//        2,10,8,20,11 //        找出最大的数,放到第一位(1,2,3,4,5)//        20,10,8,2,11 //        从剩下的4个数中,找最大的(2,3,4,5)//        20,11,8,2,10 //        从剩下的3个数中,找最大的(3,4,5)//    

Java冒泡排序法

我写的大部分博客,基本上都是留作日后回忆知识点所用,当然,如果我的文章能帮到道友们!我会更加的开心,与荣幸!如果有错误之处,请海涵,并指出问题所在,看见后我必加以修改,感谢!共勉.一起进步! 之前看过的一篇博客之中,总结了排序的效率的问题,基本上(不说死) 冒泡<选择<插入<快速(快速排序法的效率最高) 冒泡排序法: 概念: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母

Java - 冒泡排序的基础算法(尚学堂第七章数组)

/** * 冒泡排序的基础算法 */ import java.util.Arrays; public class TestBubbleSort1 { public static void main(String[] args) { int[] values = { 3, 1, 6, 2, 9, 0, 7, 4, 5, 8 }; int temp = 0; /* 2.调用内循环length-1次,数字逐渐实现从左到右依次向后排, * 每执行n次内循环就出现n个排好的数值,故内循环可少执行i次, 所

Java冒泡排序法实现

“冒泡排序法”可以将一个无序的数组按照从小到大的顺序或者是从大到小的顺序进行排序,是一种较为常见的排序算法,因为数据从小到大或者从大到小地到数列头或者数列末的过程称为“冒泡”.对于冒泡排序我觉得最重要的两点就是:(1)需要重新排序的次数,即循环的次数,这个是根据数组的序列的大小来定的,比如数组的大小为n的话,需要循环的次数就为(n - 1)次:(2)另外一个就是每次循环需要进行数据之间比较的次数,每次排序后可以确定出最大或者最小的那个数据,下次循环时就不用再进行比较了,所以每次进行比较的次数是(

Java冒泡排序算法

package com.jckb; /** * 冒泡排序 * @author gx */ public class BubbleSort { public static void main(String[] args) { int[] arr = { 6, 3, 8, 2, 9, 1 }; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] &g