• 冒泡排序


    给一组数字,要求从小到大排序;

    1.时间复杂度  O(n2) ,空间复杂度 O(n+1);

    2.基本思想:两个数比较大小,较小的数下沉,较大的数冒起来;

    3.冒泡过程:  

               1.从第零个位置开始,第零个位置的数和第一个位置的数比较,大的交换到第一个位置(冒出来);然后第一个位置的数和第二个位置上的数比较大小,大的数交换到第二个位置(冒出来);

                 依次类推,遍历到倒数第二个数的时候,最大的值就冒出来了,排在最后的位置;

               2.然后排序剩余的数;以为最后以为已经是最大的了,不需要改变,所以只排序剩余的数;

    4.代码:

    public void bubbleSort(int[] array, int length){
            //排序的趟数,如果2个数,需要排1次,所以排序趟数为length - 1;
            for(int i = 0; i < length - 1; i++) { 
                //冒泡的过程
                for(int j = 0; j < length - 1 - i; j++) {
                    if(array[j] > array[j + 1]){
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
        }

     5.优化:如果已经有序,冒泡排序依然进行;设置一个标志位,如果冒泡过程中没有交换位置,证明已经有序,结束排序;

    public void bubbleSort1(int[] array, int length){
            //标志位,如果冒泡的过程没有发送交换,证明已经有序,结束排序;
            Boolean flag;
            //排序的趟数,如果2个数,需要排1次,所以排序趟数为length - 1;
            for(int i = 0; i < length - 1; i++) {
                //冒泡的过程
                flag = false;
                for(int j = 0; j < length - 1 - i; j++) {
                    if(array[j] > array[j + 1]){
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                        flag = true;
                    }
                }
                if(!flag) {
                    break;
                }
            }
        }

          

               

  • 相关阅读:
    2020.7.11
    2020.7.13
    2020.7.9
    2020.7.10
    Java入门——day13
    Java入门——day12
    Java入门——day11
    虚拟交换机
    KVM虚拟化 ProxmoxVE
    【路径】python环境错误调试【执行路径】【操作系统,版本】
  • 原文地址:https://www.cnblogs.com/smailjunk/p/10441659.html
Copyright © 2020-2023  润新知