欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

排序算法-神奇的冒泡排序

程序员文章站 2022-07-10 17:20:57
冒泡排序我在以前学的时候呀,总有一个疑问,什么是冒泡排序呢? 为什么叫冒泡排序呢?其实就好比是水里的气泡,越往上,气泡越大,这就知道了,最后的那个数是最大的。...

冒泡排序

我在以前学的时候呀,总有一个疑问,什么是冒泡排序呢? 为什么叫冒泡排序呢?
其实就好比是水里的气泡,越往上,气泡越大,这就知道了,最后的那个数是最大的。

思路

当你的思路清晰了,代码就不是问题。首先考虑轮数,就比如说有4个数1,21,42,5
这4个数,冒泡排序就是第一个数和第二个数比,如果比第二个大,那么就交换位置,然后第二个依次和后面的比,第一轮比完,顺序就是 1,21,5,42
冒泡排序其实就是两层for循环嵌套,最外层是轮数,一共要比几轮呢,如果有i个数,就是比(i-1)轮 范围也就是1 到 i-1 ,这里的i用数组表示的话, 就是arr.length
那么是<arr.length-1还是<=arr.length-1呢,从第1轮开始,4个数,就是执行 1 2 3 一共3轮,也就是<=arr.length-1

第二层循环呢,就是比的是左边的数的位置范围,就拿第一轮来说,1,21,42,5 左边的数从下标0开始,到42也就是arr.length-2的位置为止;第二轮,还是从下标0开始,然后到arr.length-3 规律就是arr.length-1-i

里面就是比较如果左边的数大于右边的数,它们就交换

冒泡排序的实现:

public class Hello {
    //冒泡排序:
    public static void main(String[] args) {
        int []arr ={100,0,8,6,1,3,5,9,-3};
        for (int i = 1; i <=arr.length-1 ; i++) {
            for (int j = 0; j <= arr.length-1-i; j++) {
                if(arr[j]<arr[j+1]){
                    int t=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=t;
                }
            }
        }
        for (int a:arr) {
            System.out.print(a+"   ");
        }

    }
}

控制台结果:

排序算法-神奇的冒泡排序

本文地址:https://blog.csdn.net/ITwuwei/article/details/110879976