继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【新手自白书】简单冒泡排序的实现(JAVA)

肆意先生
关注TA
已关注
手记 6
粉丝 0
获赞 151

复习一下简单冒泡排序

冒泡排序比较简单,只要懂得其原理很容易写出相应的代码。

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

根据冒泡排序的定义,我们要做的就是两两依次比较数组data中的数据

if(data[i] > data[i+1]){
    temp = data[i] ;
    data[i] = data[i+1] ;
    data[i+1] = temp ;
}

长度为n的数组,最多需要比较n-1次,只要这个数组在一次循环中没发生过比较,就说明已排序完毕。为了知晓是否发生了比较,要设置一个标志变量flag,当flag的值没有改变就说明循环中未出现过比较,类设计如下:

public class BSort {

    //冒泡排序

    private int[] data = null ;     //排序前
    private int[] array = null ;    //排序后

    public BSort(int[] data){
        this.setData(data) ;        //初始化数据
        this.dataToArray() ;        //自动调用比较算法,可以不放在构造方法中
    }

    private void setData(int[] data){
        this.data = data ;
    }

    public String getArray(){       //以字符串形式输出
        String s = "排序结果为:" ;
        for(int i = 0 ;i < this.array.length ;i++){
            s = s + this.array[i] + " " ;
        }
        return s ;
    }

    private void dataToArray(){
        for(int i = 1 ;i < data.length ;i ++){
            int flag = 0 ;
            for(int j = 0 ;j < data.length - 1 ;j ++){
                if(this.data[j] > this.data[j+1]){
                    int temp = 0 ;
                    temp = this.data[j] ;
                    this.data[j] = this.data[j+1] ;
                    this.data[j+1] = temp ;
                    flag = 1 ;
                }
            }
            if(flag == 0){
                this.array = this.data ;
                break ;
            }
        }
    }
}
  • 测试
public class Test {

    public static void main(String[] args) {

        System.out.println(new BSort(
                new int[]{77,15,22,17,33,77,125})
                .getArray());   
    }

}
  • 测试结果

排序结果为:15 17 22 33 77 77 125

打开App,阅读手记
15人推荐
发表评论
随时随地看视频慕课网APP