• 归并排序(比希尔还要快)


    代码

    public class MergeSort {
    
    	public static void main(String[] args) {
    //		int[] arr = {8,4,5,7,1,3,2,6};
    //		int[] temp = new int[arr.length];
    //		System.out.println("排序前:" +Arrays.toString(arr));
    //		mergeSort(arr, 0, arr.length - 1, temp);
    //		System.out.println("排序后:" +Arrays.toString(arr));
    		int[] arr = new int[80000000];
    		int[] temp = new int[arr.length];
    		for (int i = 0; i < arr.length; i++) {
    			//生成一个【0,8000000】的数
    			arr[i] = (int)(Math.random() * 8000000);
    		}
    		long start = System.currentTimeMillis();
    		mergeSort(arr, 0, arr.length - 1, temp);
    		long end = System.currentTimeMillis();
    		System.out.println("总共花费:" + (end - start));
    	}
    	
    	public static void mergeSort(int[] arr,int left,int right,int[] temp){
    		if(left < right){
    			int mid = (left + right) / 2;
    			mergeSort(arr, left, mid, temp);
    			mergeSort(arr, mid + 1, right, temp);
    			merge(arr, left, mid, right, temp);
    		}
    	}
    	
    	public static void merge(int[] arr,int left,int mid,int right,int[] temp){
    		int i = left;
    		int j = mid + 1;
    		int t = 0;//指向temp的当前索引
    		while(i <= mid && j <= right){
    			if(arr[i] < arr[j]){
    				temp[t] = arr[i];
    				i += 1;
    				t += 1;
    			}else{
    				temp[t] = arr[j];
    				j += 1;
    				t += 1;
    			}
    			
    		}
    		while(i <= mid){
    			temp[t] = arr[i];
    			i += 1;
    			t += 1;
    		}
    		while(j <= right){
    			temp[t] = arr[j];
    			j += 1;
    			t += 1;
    		}
    		t = 0;
    		int tempLeft = left;
    		while(tempLeft <= right){
    			arr[tempLeft] = temp[t];
    			t += 1;
    			tempLeft += 1;
    		}
    	}
    }
    

    效率

    		//8000 0000 15156ms
    		//800 0000 1378ms
    		//80 0000 1118ms
    		//8 0000 28ms
    
  • 相关阅读:
    Java进阶之并发初探
    Java进阶之HashMap剖析
    Java进阶之反射
    Linux常用命令
    海量数据处理算法与面试题
    一些刷题时总结的重要知识点
    一些Java刷题时的小知识点
    九章算法知识点与题目总结(不定时更新...)
    c++设计模式之状态模式
    c++设计模式之抽象工厂模式
  • 原文地址:https://www.cnblogs.com/kaka-qiqi/p/15294126.html
Copyright © 2020-2023  润新知