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我们来运行一下,没问题!



目录
相关文章
|
3月前
|
Java
冒泡排序(java)
冒泡排序(java)
|
4月前
|
存储 搜索推荐 算法
Java数组全套深入探究——进阶知识阶段2、冒泡排序
Java数组全套深入探究——进阶知识阶段2、冒泡排序
63 0
|
4月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
50 0
|
11月前
|
Java
java实现冒泡排序
java实现冒泡排序
|
12月前
|
搜索推荐 Java
java冒泡排序实现
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
594 0
|
1月前
|
搜索推荐 Java
|
12月前
|
搜索推荐 Java
简单而经典:Java中的冒泡排序算法详解
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻元素的大小,并交换它们直到整个序列有序。冒泡排序的基本思想是将较大的元素逐渐“浮”到数组的右端,而较小的元素逐渐“沉”到数组的左端。
607 1
简单而经典:Java中的冒泡排序算法详解
|
4月前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
|
4月前
|
搜索推荐 算法 Java
Java基础(冒泡排序算法)
Java基础(冒泡排序算法)
49 3
|
4月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--冒泡排序
数据结构与算法(Java篇)笔记--冒泡排序