zoukankan      html  css  js  c++  java
  • 合并排序

    概述

    合并的升序排列

    代码

    package com.lilei.myes.es.pack1114;
    
    import java.util.Random;
    
    public class merge_sort {
    
    	public static void main(String[] args) {
    
    		Random rand = new Random();
    
    		int[] array = new int[10];
    
    		for (int i = 0; i < array.length; i++)
    			array[i] = rand.nextInt(100);
    
    		for (int v : array)
    			System.out.print(v + ",");
    
    		System.out.println();
    		int[] aux = new int[array.length];
    
    		merge(array,aux,0,array.length-1);
    
    		for (int v : array)
    			System.out.print(v + ",");
    	}
    
    	static void merge(int[] array,int[] aux, int left, int right) {
    		if (left < right) {
    
    			int mid = (left + right) / 2;
    			merge(array,aux,left,mid);
    			merge(array,aux,mid+1,right);
    			
    			int p_left = left;
    			int p_right = mid+1;
    			int p_aux = left;
    			
    			while(p_left<=mid && p_right<=right){
    				if (array[p_left] < array[p_right]){
    					aux[p_aux] = array[p_left];
    					p_left++;
    				}else{
    					aux[p_aux] = array[p_right];
    					p_right++;
    				}
    				p_aux++;
    			}
    			
    			if (p_left<=mid){
    				for(int i=p_left;i<=mid;i++){
    					aux[p_aux++] = array[i];
    				}
    			}else if (p_right<=right){
    				for(int i=p_right;i<=right;i++){
    					aux[p_aux++] = array[i];
    				}
    			}
    			
    			for(int i=left;i<=right;i++){
    				array[i] = aux[i];
    			}
    		}
    
    	}
    
    }
    

      

  • 相关阅读:
    Kruskal算法
    拓扑排序
    邻接表有向图
    邻接矩阵的有向图
    邻接表无向图
    邻接矩阵无向图
    斐波那契堆
    二项堆
    斜堆(待补充)
    项目中maven依赖无法自动下载
  • 原文地址:https://www.cnblogs.com/lilei2blog/p/7832958.html
Copyright © 2011-2022 走看看