⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mergesort.java

📁 mergesort java 实现
💻 JAVA
字号:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class COMP7712_WYin_1_4b {
	
	// read int number from the standard input,
	// if the input is not "number", the value "-9999" will be assigned 
	public static int readnumber()
	{
	    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    String s = null;
	    int r = -9999;
	    try {
	        s = in.readLine();
	    }
	    catch (IOException e) {
	        e.printStackTrace();
	    }
	    try {
	    	r = Integer.parseInt(s);
	        //System.out.println("which is a number");
	    }
	    catch (NumberFormatException e) {
	        System.out.println("which is not a number");
	    }
	    return r;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int m=0,n=0;
	    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    String s = null;
	    
//1.initialize list A	 	    
		do
		{
	    System.out.println("Please input the size of list A:");
		m = readnumber();
		}while(m<0||m==0);
	    System.out.println("Elements of list A:");
		int[] A = new int[m];	    
	    for(int i=0;i<m;i++)
	    	A[i] = readnumber();
	    System.out.print("list A: ");
	    for(int i=0;i<m;i++)
	    	System.out.print(A[i]+" ");
	    System.out.println();
    
//2.initialize list B
	    do
	    {
		System.out.println("=====\nPlease input the size of list B:");
		n = readnumber();
		}while(n<0||n==0);
		System.out.println("Elements of list B:");
		int[] B = new int[n];	    
	    for(int i=0;i<n;i++)
	    	B[i] = readnumber();
	    System.out.print("list B: ");
	    for(int i=0;i<n;i++)
	    	System.out.print(B[i]+" ");
	    System.out.println();

		int k=0;
		int[] C = new int[m+n];
	    for(k=0;k<m;k++)
	    	C[k] = A[k];
	    for(k=0;k<n;k++)
	    	C[m+k] = B[k];
	    System.out.print("The orginal list C: ");
	    for(k=0;k<m+n;k++)
	    	System.out.print(C[k]+" ");		
	    System.out.println();
	    
	    mergesort(m+n,C);
	    
	    System.out.print("The last list C: ");
	    for(k=0;k<m+n;k++)
	    	System.out.print(C[k]+" ");	 
	}

	
	public static int[] merge(int m,int A[],int n,int B[],int C[])
	{
		int i=0,j=0,k=0,t=0;
		while(i<m && j<n)
		{
			C[k++] = A[i]<B[j]?A[i++]:B[j++];
		}
		if(i==m)
		{
			for(t=j;t<n;t++)
				C[k++] = B[t]; 
		}
		else if(j==n)
		{
			for(t=i;t<m;t++)
				C[k++] = A[t]; 
		}
		return C;
	}

	public static int[] mergesort(int size,int a[])
	{
		int m = size/2;
		int n = size-m;
		int[] A = new int[m];
		int[] B = new int[n];
		for (int i=0;i<m;i++)
			A[i] = a[i];
		for (int i=0;i<n;i++)
			B[i] = a[m+i];
		int[] C = new int[m+n];
		if(size > 1)
		{
			merge(m,mergesort(m,A),n,mergesort(n,B),C);
			for(int i=0;i<size;i++)
				a[i] = C[i];
			return a;
		}
		else
			return a;
		
	}

	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -