zoukankan      html  css  js  c++  java
  • java——快排、冒泡、希尔、归并

    直接贴代码

    快排:

    public class Test {
        private static void sort(int[] nums){
            if(nums == null || nums.length == 0){
                return;
            }
            quickSort(nums, 0, nums.length-1);
        }
    
        private static void quickSort(int[] nums, int start, int end) {
            int low = start;
            int high = end;
            int temp = nums[start];
            while(start<end){
                while (start<end && nums[end]>=temp){
                    end--;
                }
                swap(nums, start, end);
                while(start<end && nums[start]<=temp){
                    start++;
                }
                swap(nums, start, end);
            }
            if(start-1>low) {
                quickSort(nums, low, start - 1);
            }
            if(high>start+1) {
                quickSort(nums, start + 1, high);
            }
        }
    
        private static void swap(int[] nums, int i, int j){
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    
        public static void main(String [] args){
            int[] nums = {49,22,34, 6,22,19,3,19};
            sort(nums);
            for(int i=0;i<nums.length;i++){
                System.out.print(nums[i]+“ ”);
            }
    
        }
    }

     冒泡:

    private static void bubbleSort(int[] num){
            for(int i = 0 ; i < num.length ; i ++) {
                for(int j = 0 ; j < num.length - i - 1 ; j ++){
                    if(num[j]>num[j+1]){
                        swap(num, j , j+1);
                    }
                }
            }
        }

    改进冒泡:

    public void bubbleSort(int arr[]) {
        boolean didSwap;
        for(int i = 0, len = arr.length; i < len - 1; i++) {
            didSwap = false;
            for(int j = 0; j < len - i - 1; j++) {
                if(arr[j + 1] < arr[j]) {
                    swap(arr, j, j + 1);
                    didSwap = true;
                }
            }
            if(didSwap == false)
                return;
        }    
    }

    改进后的冒泡排序最佳情况下时间复杂度为O(n)

     希尔排序:

        private static void shellSort(int[] nums){
            for(int d = nums.length/2 ; d > 0 ; d = d / 2){
                for(int i = d ; i < nums.length ; i ++){
                    for(int j = i; j>=d; j = j-d){
                        if (nums[j] < nums[j - d]) {
                            swap(nums, j - d, j);
                        }else{
                            break;
                        }
                    }
                }
            }
        }

     归并排序:

        private static void mergeSort(int[] nums, int low, int high){
            if(low>=high){
                return;
            }
            int mid = (low+high)/2;
            mergeSort(nums, low, mid);
            mergeSort(nums, mid + 1, high);
            merge(nums,low, mid, high);
        }
    
        private static void merge(int[] nums, int low, int mid, int high){
            int[] temp = new int[high-low+1];
            int i = low;
            int j = mid+1;
            int k = 0;
            while(i<=mid&&j<=high){
                if(nums[i]<nums[j]){
                    temp[k++] = nums[i++];
                }else{
                    temp[k++] = nums[j++];
                }
            }
            while(i<=mid){
                temp[k++] = nums[i++];
            }
            while(j<=high){
                temp[k++] = nums[j++];
            }
            for(int p = 0 ; p < temp.length ; p++){
                nums[low+p] = temp[p];
            }
        }
  • 相关阅读:
    JSP/Servlet相关
    mysql 相关问题解决
    Git常用
    利用JDBC连接MySQL并使用MySQL
    memcache、redis原理对比
    Python 2.7.x 和 3.x 版本的重要区别
    python 单例模式
    python 装饰器原理及用法
    python 冒泡排序
    python 迭代器和生成器
  • 原文地址:https://www.cnblogs.com/gaoquanquan/p/10454538.html
Copyright © 2011-2022 走看看