zoukankan      html  css  js  c++  java
  • 【基础算法】- 2路归并排序

    import java.util.Arrays;
    
    
    public class MergeSort {
    
    	public static void main(String[] args) {
    		
    		MergeSort sort = new MergeSort();
    		int[] a = {2,4,3,1,0,9,5,6,3,7};
    		int[] r = sort.sort(a);
    		for(int i = 0 ; i < r.length ; i++){
    			System.out.println(r[i]);
    		}
    	}
    	
    	private int[] sort(int[] a){
    		
    		if(a.length == 1) return a;
    		else{
    			int center = a.length / 2;
    			int[] left = Arrays.copyOfRange(a, 0, center);
    			int[] right = Arrays.copyOfRange(a, center, a.length);
    			int[] leftResult = sort(left);
    			int[] rightResult = sort(right);
    			return merge(leftResult,rightResult);
    		}
    	}
    	
    	private int[] merge(int[] a , int[] b){
    		
    		int[] c = new int[a.length + b.length];
    		int count = 0 , i = 0 , j = 0;
    		for(; i < a.length && j < b.length ;){
    			c[count++] = a[i] < b[j] ? a[i++] : b[j++];
    		}
    		int size = a.length - i > 0 ? a.length - i : b.length - j;
    		boolean sign = a.length - i > 0 ? true : false;
    		if(size > 0){
    			if(sign){
    				for(int k = count ; k < c.length ;){
    					c[k++] = a[i++]; 
    				}
    			}else{
    				for(int k = count ; k < c.length ;){
    					c[k++] = b[j++]; 
    				}
    			}
    		}
    		return c;
    	}
    }
    
  • 相关阅读:
    vue导出Excel表格(纯前端)
    Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano
    python高级特性
    顺序容器
    感知机和支持向量机
    IO库
    字符串、向量、数组、迭代器

    c++函数
    C++语句
  • 原文地址:https://www.cnblogs.com/lixusign/p/3352535.html
Copyright © 2011-2022 走看看