• 冒泡排序


    冒泡排序  有轻气泡上浮和较大值后移两种,只不过换汤不换药理解一种另一个也非常简单。 注意冒泡是针对 int类型的数组  其他类型的不适合

    基本逻辑  

    两层循环  为什么不是一层  三层  四层呢?

    因为冒泡 是比较两个相邻的元素 ,比较后较大值后移。所以一层只能保证 最大的值在最后并不能保证所有元素排序的正确性

    例如  3 5 2   冒泡后  3  2  5 显然 3是要比2大的但是 3却在2的前面,所以一层循环不够。

    而两层循环就可以了

    变量i为0 时可以 找到最大值 i加一找到第二大的数值 循环结束前 找到最小值 正好可以完成冒泡排序

    int [] arr = {1,2,3,10,5,9,6};

        for(int i=0;i<arr.length-1;i++){
                boolean iswap=false;
                for(int k=0;k<arr.length-i-1;k++){
                    if(arr[k]>arr[k+1]){
                        int m=arr[k];
                        arr[k]=arr[k+1];
                        arr[k+1]=m;
                        iswap=true;
                    }
                    
                }
                if(!iswap){
                    break;
                }
                System.out.println(Arrays.toString(arr));
            }

    原来的 {1,2,3,10,5,9,6}

    输出的 [1, 2, 3, 5, 9, 6, 10]
        [1, 2, 3, 5, 6, 9, 10]

    从左向右比较 最大的先到最右

    int [] arr = {1,2,3,10,5,9,6};

    for(int i=0;i<arr.length-1;i++){
                boolean iswap = false;
                for(int k=arr.length-1;k>i;k--){
                    if(arr[k]<arr[k-1]){
                        int m =arr[k];
                        arr[k]=arr[k-1];
                        arr[k-1]=m;
                        iswap=true;
                    }
                }
                if(!iswap){
                    break;
                }
                System.out.println(Arrays.toString(arr));
            }

    原来的 {1,2,3,10,5,9,6}

    输出的 [1, 2, 3, 5, 10, 6, 9]
         [1, 2, 3, 5, 6, 10, 9]
         [1, 2, 3, 5, 6, 9, 10]

    从右向左 小的向左移位 最小的先到左

  • 相关阅读:
    二叉排序树
    堆排序
    线索化二叉树
    vue 格式化代码
    线程的理解
    声明式的服务调用 Feign
    使用锁 的理解
    zookeeper 的理解
    AQS 源码解析
    HashMap 的理解与结构
  • 原文地址:https://www.cnblogs.com/zjf6666/p/6478267.html
Copyright © 2020-2023  润新知