冒泡排序

今天呢,重新看了一下冒泡排序算法,写了一个小demo,然后讲解一下它的时间复杂度,先附上代码:

public class bubbleSort {

    public static void main(String[] args) {
        int [] numbers=new int[]{1,5,8,2,7,9};
        //从第一个往后排,如果第二个数比第一个数小,交换两个数的位置。继续遍历,依次类推,可以保证前一个比后一个数小,那么第一趟最后一个数就是最大的。
        //第二趟倒数第二个数就是前面n-1个数里面最大的,一共找n-1趟就可排好序  算法复杂度为:n*(n-1)*(n-2)...=n*(N-1)/2约等于n的平方
        for(int i=0;i<numbers.length;i++){
            for(int j=0;j<numbers.length-1-i;j++){
                if(numbers[j]>numbers[j+1]){
                    int temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;

                }
            }
        }
        System.out.println(Arrays.toString(numbers));
    }
}

所谓冒泡就是从第一个向最后一个咕噜咕噜冒泡(比较抽象的形容),假设要排序的数组长度是n,那么它的泡泡一共要冒个n-1趟才能完成排序。 可能这样的描述大家都不太懂,举一个简单的例子:比如我们大一军训的时候,教官会根据我们的身高排位置。教官第一趟先比较第一个学生和第二个学生的身高,发现第二个学生比第一个学生矮,就会调换他俩的顺序,第二次会比较第二个学生和第三个学生的身高,依次类推(这样他排到最后一个学生的时候,最后一个学生就是最高的)。第二趟,还是相同的原理,只不过就不需要比较最后一个学生的身高。之后的过程大家进行推理就好了(懂的都懂)。那么这样排的话,教官会比较累,说明这个算法时间复杂度比较高。大约来算一下,就是:n*(n-1)…2=n(n-1)/2约等于n的平方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值