java实现4种内部排序

两种插入类排序:

直接插入排序:

 public static void insertSort(int[] arr, int len){
        for(int i=1; i<len; i++){
            int temp = arr[i];
            int j=i-1;
            while(j>=0 && temp<arr[j]){
                arr[j+1] = arr[j];
                --j;
            }
            arr[j+1] = temp;
        }
    }

折半插入排序:

 public static void binarySort(int[] arr,int len){
        for(int i=1; i<len; i++){
            int temp = arr[i];
            int low = 0, high = i-1;
            while(low<=high){
                int mid=(low+high)/2;
                if(arr[i] > arr[mid]) low=mid+1;
                else high = mid-1;
            }
            for(int j=i; j>low; --j){
                arr[j] = arr[j-1];
            }
            arr[low] = temp;
        }
    }

两种交换类排序:

冒泡排序:

 public static void bubbleSort(int[] arr,int len){
        for(int i=len-1; i>=1; i--){
            for(int j=1; j<=i; j++){
                if(arr[j]<arr[j-1]){
                    int temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                }
            }
        }
    }

快速排序:

  public static void quickSort(int[] arr,int low, int high){
        if(low<high){
            int temp = arr[low];
            int i = low,j = high;
            while(i!=j){
                while(i<j && arr[j]>=temp) --j;
                if(i<j){
                    arr[i] = arr[j];
                    i++;
                }
                while(i<j && arr[i] < temp) ++i;
                    if(i<j) {
                        arr[j] = arr[i];
                        j--;
                    }
            }
            arr[i] = temp;
            quickSort(arr,0,i-1);
            quickSort(arr, i+1,high);
        }
    }

时间复杂度和空间复杂度:

方法调用:

   public static void main(String[] args) {
        int arr[] = {23,3,7,22,1,9,2};
        //bubbleSort(arr,arr.length);
        //quickSort(arr,0, arr.length-1);
        //binarySort(arr,arr.length);
        insertSort(arr,arr.length);
        System.out.print("排序后为:");
        for(int x : arr){
            System.out.printf("%d,",x);
        }
    }

  

原文地址:https://www.cnblogs.com/sjxbg/p/11226319.html