Javaの配列のバブルソート、バブルソートの最適化

11422 ワード

泡のソート:
   :
        int[] arr={3,4,2,6,1};
      1.     ,   [0]  ,      。  [0] [1] ,[1] [2] ,[2] [3] ……
      
        if(arr[0]arr[2]){
          //    
          int temp=arr[1];
          arr[1]=arr[2];
          arr[2]=arr[temp];
        }
        
              n(5)   arr ,     ,   n-1(4) ;    {3,2,4,1,6},       
                  ;
       
       2.     (      i ,    [i]=1):
               ,            ,                 。      
        {2,3,1,4,6},    n-1-i(3) 
       
       ......
コード:

     public static void main(String[] args) {

        int[] arr={3,4,2,6,1};
        System.out.println("    :"+ Arrays.toString(arr));

        for (int i = 0; i < arr.length-1; i++) { //   ,    n-1 
            for (int j = 0; j <arr.length-1-i; j++) {//  , i      n-i-i 
                if(arr[j]>arr[j+1]) {
                    //    
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }

        }
        System.out.println("   :"+ Arrays.toString(arr));
    }
泡ソートの利点:
         :       ,       ,                   。
                         ,            。
        :O(n²) tip:        ,      
バブルソート法の不足と改善方法:
      ,      ,         ,           ,                   
  ,        ,        flag,         0,          
     ,          flag  0,        ,  flag  0。      
    ,     ,     0,             ,     ;      
 
     https://www.cnblogs.com/xiaoming0601/p/5866048.html             0.0
バブルソート最適化

        int[] arr={3,4,5,6,7};
        System.out.println("    :"+ Arrays.toString(arr));

        boolean flag=false; //     , flag  ,          
        
        for (int i = 0; i < arr.length-1; i++) { //   ,    n-1 
            for (int j = 0; j <arr.length-1-i; j++) {//  , i      n-i-1 
                if(arr[j]>arr[j+1]) {
                    //    
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    flag=true;
                }
            }
            //     
            if(!flag){
                break;//       ,         ,flag    false,        ,    
            }

        }
        System.out.println("   :"+ Arrays.toString(arr));
-------------------------------------------------------------------------------------------------------------
並べ替えや選択を挿入して並べ替えもやり直しましょう