冒泡排序完整版

在这里插入图片描述

import java.util.Arrays;

public class Code_00_BubbleSort {
    public static void bubbleSort(int []arr){
        if(arr==null ||arr.length<2){
            return;
        }
        for(int e=arr.length-1;e>0;e--){
            for(int i=0;i<e;i++){
                if(arr[i]>arr[i+1]){
                    swap(arr,i,i+1);
                }
            }
        }
    }

    private static void swap(int[] arr, int i, int j) {
/*        arr[i]=arr[i]^arr[j];
        arr[j]=arr[i]^arr[j];
        arr[i]=arr[i]^arr[j];*/
        arr[i]+=arr[j];
        arr[j]=arr[i]-arr[j];
        arr[i]=arr[i]-arr[j];
    }

    //对数器
    public static void comparator(int []arr){
        Arrays.sort(arr);
    }

    //for test
    public static int[] generateRandomArray(int maxSize,int maxValue){
        int []arr=new int[(int)((maxSize+1)*Math.random())];
        for(int i=0;i<arr.length;i++){
            arr[i]=(int)((maxValue+1)*Math.random())-(int)(maxValue*Math.random());  //[-maxValue,maxValue]
        }
        return arr;
    }
    //for test
    public static int[]copyArray(int []arr){
        if(arr==null)
            return null;
        int []res=new int[arr.length];
        for(int i=0;i<arr.length;i++){
            res[i]=arr[i];
        }
        return res;
    }

    //for test
    public static boolean isEqual(int[]arr1,int[]arr2){
        if((arr1==null&&arr2!=null)||(arr1!=null&&arr2==null)){
            return false;
        }
        if(arr1==null&&arr2==null)
            return true;
        if (arr1.length!=arr2.length)
            return false;
        for(int i=0;i<arr1.length;i++){
            if(arr1[i]!=arr2[i])
                return false;
        }
        return true;
    }
    //for test
    public static void printArray(int []arr){
        if(arr==null){
            return;
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");

        }
        System.out.println();
    }
    //for test
    public static void main(String[] args) {
        int testTime=500000;
        int maxSize=100;
        int maxValue=100;
        boolean succeed=true;
        for(int i=0;i<testTime;i++){
            int []arr1=generateRandomArray(maxSize,maxValue);
            int []arr2=copyArray(arr1);
            bubbleSort(arr1);
            comparator(arr2);
            if(!isEqual(arr1,arr2)){
                succeed=false;
                break;
            }

        }
        System.out.println(succeed?"Nice !":"Fucking fucked!");

        int[]arr=generateRandomArray(maxSize,maxValue);
        printArray(arr);
        bubbleSort(arr);
        printArray(arr);
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/DemoD_/article/details/89228123