wtf?java的冒泡排序还可以这样写

简介: wtf?java的冒泡排序还可以这样写

举个栗子:将5,1,9,10,20,55,0,66进行小大排序

用一个数组存储这些数据,两个for循环进行比较

1.

第一趟:5和66比较,66大放位置不变

第二趟:5和0比较,5大交换位置变成了0,1,9,10,20,55,5,66

第三趟:0和55比较,位置不变

……

变成0,1,9,10,20,55,5,66

2…

第一趟:1和66比较,位置不变

……

很简单看下面的代码一目了然

package com.moshang;
public class Bumble {
  int a[];
  public Bumble(int a[]){
    this.a=a;
    int temp;
    for(int i=a.length-1;i>0;i--){
      @SuppressWarnings("unused")
      boolean flag=false;
      for(int j=1;j<=i;j++){
        if(a[j-1]>a[j]){
          temp=a[j-1];
          a[j-1]=a[j];
          a[j]=temp;
          flag=true;
        }
        if(flag=false){return;}
      }
    }
  }
  void show(){    
    for(int k=0;k<a.length;k++){
    System.out.print(a[k]+" ");
    }
}
  public static void main(String[] args) {
    int a[]={5,1,9,10,20,55,0,66};
    Bumble b=new Bumble(a);
    b.show();
  }
}

定义一个flag用来优化算法,如果是1,2,3,4,5,6的有序只需要O(1)的时间复杂度能排列出来,效率高

ok我们来运行一下,没问题!



目录
相关文章
|
5月前
|
Java
冒泡排序(java)
冒泡排序(java)
|
6月前
|
存储 搜索推荐 算法
Java数组全套深入探究——进阶知识阶段2、冒泡排序
Java数组全套深入探究——进阶知识阶段2、冒泡排序
81 0
|
6月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
64 0
|
1月前
|
机器学习/深度学习 算法 搜索推荐
让星星⭐月亮告诉你,Java冒泡排序及其时间复杂度计算
冒泡排序是一种简单的排序算法,通过多次遍历数组,每次比较相邻元素并交换位置,将较小的元素逐步移至数组前端。第一轮结束后,最小值会位于首位;第二轮则将次小值置于第二位,依此类推。经过 (n-1) 轮遍历后,数组完成排序。冒泡排序的时间复杂度为 O(n²),在最优情况下(已排序数组)时间复杂度为 O(n)。示例代码展示了如何实现冒泡排序。
51 1
|
1月前
|
算法 Java
java冒泡排序与二分查找(详解)
java冒泡排序与二分查找(详解)
33 4
|
1月前
|
人工智能 Java
java之冒泡排序8个数
java之冒泡排序8个数
10 0
|
3月前
|
搜索推荐 Java
|
搜索推荐 Java
简单而经典:Java中的冒泡排序算法详解
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。
840 1
简单而经典:Java中的冒泡排序算法详解
|
6月前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序