排序算法之冒泡排序及Java实现

一时失言乱红尘 2022-05-27 14:16 311阅读 0赞

一、排序算法的分类

  1. 选择排序(直接选择排序,堆排序)
  2. 交换排序(冒泡排序,快速排序)
  3. 插入排序(直接插入排序,希尔排序)
  4. 归并排序
  5. 桶式排序
  6. 基数排序

二、冒泡排序的原理

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

步骤如下所示:

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

三、冒泡排序的实现

  1. public class BubbleSort {
  2. /**
  3. * 冒泡排序
  4. * 每次选择两个相邻的值进行比较,较小的放在前面
  5. * 第一轮比较时,第一个和第二个比较,第二个和第三个比较,一直到最后一个
  6. * 第一轮结束,最后一个值为最大值
  7. * 再进行第二轮比较,比较时,无需再比较最后一个值
  8. * ...
  9. * 依次类推,保证每一轮的最后一个值都是最大值,直到没有值再与第一个值比较时,循环结束
  10. * @param a
  11. */
  12. public static void bubSort(int a[]){
  13. for(int i=0; i<a.length; i++){
  14. //第一轮比较完后,最后一个位置的值为最大值
  15. //每遍历一轮,最后的位置就能多确定一个
  16. for(int j=0; j<a.length-i-1; j++){
  17. int tmp = a[j];//保存a[j]的值,如果比下一个值大,则交换位置
  18. if(a[j]>a[j+1]){
  19. a[j] = a[j+1];
  20. a[j+1] = tmp;
  21. }
  22. }
  23. }
  24. }
  25. /**
  26. * @param args
  27. */
  28. public static void main(String[] args) {
  29. // TODO Auto-generated method stub
  30. int[] test = {
  31. 5,2,9,4,7,3,1};
  32. bubSort(test);
  33. for(int i=0; i<test.length; i++){
  34. System.out.print(test[i] + " ");
  35. }
  36. }
  37. }

测试结果:

  1. 1 2 3 4 5 7 9

发表评论

表情:
评论列表 (有 0 条评论,311人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java排序算法冒泡排序

    冒泡排序是java十大排序算法中的基础算法,了解其实现原理很有必要,下面就来说说冒泡排序,其实现代码并不复杂,主要是弄清楚执行的流程, 一、基本概念: 依次比较相邻的两个数

    相关 排序算法冒泡排序

    冒泡排序 冒泡排序无疑是最为出名的排序算法之一,从序列的一端开始往另一端冒泡(你可以从左往右冒泡,也可以从右往左冒泡,看心情),依次比较相邻的两个数的大小(到底是比大还是

    相关 排序算法冒泡排序

    同样的先上这张图 ![Center][] 下面分析交换排序之冒泡排序: 冒泡排序和选择排序很相似,都是遍历一趟把最大的元素放到最后面,但选择排序属于选择排序,而冒泡

    相关 排序算法冒泡排序

    排序算法之冒泡排序 这一系列主要讲的是排序算法,首先会简单介绍各种排序算法的基本思想,然后会给出每种算法的Python实现和C++实现,代码中均有非常详细的注释。最后会给