排序算法之冒泡排序

忘是亡心i 2022-10-20 05:29 344阅读 0赞

冒泡排序

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

java代码实现bubblesort冒泡排序

  1. package com.zy.test;
  2. import java.util.Arrays;
  3. public class BubbleSort {
  4. public static void main(String[] args) {
  5. System.out.println("sortTest");
  6. int[] arr={ 6,3,8,2,9,1};
  7. System.out.println(Arrays.toString(arr));
  8. for (int i=0;i<arr.length-1;i++){
  9. for (int j=0;j<arr.length-1-i;j++){
  10. int temp = 0;
  11. if (arr[j]>arr[j+1]) {
  12. temp = arr[j];
  13. arr[j] = arr[j+1];
  14. arr[j+1] = temp;
  15. }
  16. }
  17. }
  18. System.out.println(Arrays.toString(arr));
  19. }
  20. }

冒泡排序思路:

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

冒泡有一个最大的问题就是这种算法不管不管你有序还是没序,闭着眼睛把你循环比较了再说.

比如我举个数组例子:[ 5,6,7,8,9 ],一个有序的数组,根本不需要排序,它仍然是双层循环一个不少的把数据遍历干净,这其实就是做了没必要做的事情,属于浪费资源。

针对这个问题,我们可以设定一个临时遍历来标记该数组是否已经有序,如果有序了就不用遍历了。

  1. package com.zy.test;
  2. import java.util.Arrays;
  3. public class BubbleSort {
  4. public static void main(String[] args) {
  5. System.out.println("sortTest");
  6. int[] arr={ 6,3,8,2,9,1};
  7. System.out.println(Arrays.toString(arr));
  8. for (int i=0;i<arr.length-1;i++){
  9. boolean flag=true;
  10. for (int j=0;j<arr.length-1-i;j++){
  11. int temp = 0;
  12. if (arr[j]>arr[j+1]) {
  13. flag=false;
  14. temp = arr[j];
  15. arr[j] = arr[j+1];
  16. arr[j+1] = temp;
  17. }
  18. }if (flag){
  19. break;
  20. }
  21. }
  22. System.out.println(Arrays.toString(arr));
  23. }
  24. }

发表评论

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

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

相关阅读

    相关 排序算法冒泡排序

    \[交换排序-冒泡排序\] 1.算法思想 相邻元素进行数值比较,当前一个元素大于后一个元素时,交换两个元素的值,每次遍历都能将最大的值置于数组末尾。 2.流程解

    相关 排序算法冒泡排序

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

    相关 排序算法冒泡排序

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

    相关 排序算法冒泡排序

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

    相关 排序算法冒泡排序

    冒泡排序顾名思义就是整个排序过程就像气泡一样往上升,单向冒泡排序的基本思想就是:给定 n 个数值,从第一个值开始一次对相邻的进行比较,当前面的值大于后面的值的时候,交换位置,依