zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    

      

  • 相关阅读:
    SQLServer 可疑
    String与Long互转
    洛谷 P5644
    洛谷 P3783
    洛谷 P4663
    洛谷 P3438
    Atcoder Grand Contest 054 题解
    迭代器失效问题
    Solution -「CF 232E」Quick Tortoise
    Solution -「NOI 2020」「洛谷 P6776」超现实树
  • 原文地址:https://www.cnblogs.com/sjxbg/p/11226319.html
Copyright © 2011-2022 走看看