合并排序

来源:互联网 发布:office2010卸载软件 编辑:程序博客网 时间:2024/06/06 03:27
import java.util.Scanner;
//import java.util.ArrayList;


class MergeSort {
public static void main(String args []){
int[] a=new int[10];
System.out.println("请输入十个数");
Scanner sc=new Scanner(System.in);
// int m=sc.nextInt();
for(int i=0;i<10;i++){
a[i]=sc.nextInt();
}
// for(int i=0;i<10;i++){
// System.out.println(a[i]);
// }
MergeSort(a,0,9);
for(int i=0;i<10;i++){
System.out.print(a[i]+" ");
}
 
sc.close(); 
 
}
 
public static void MergeSort(int[] array, int low, int high)  
{  
    if (low >= high)  
        return;  
  
    int middle = (low + high) / 2;  
    MergeSort(array, low, middle);  
    MergeSort(array, middle + 1, high);  
  
    Merge(array, low, middle, high);  
    
//     System.out.print("array=");
//     for(int i=0;i<10;i++){
// System.out.print(array[i]+" ");
//     }
//     System.out.println();
}  
 
 
private static void Merge(int[] array, int low, int middle, int high)  
{  
    int length = high - low + 1;  
      
    int LowToMiddle = low;          
    int MiddleToHigh = middle + 1;  
  
    int[] tempArray = new int[length];  
    int temp = 0;  
  
    while (LowToMiddle <= middle && MiddleToHigh <= high)  
    {  
        if (array[LowToMiddle] <= array[MiddleToHigh])  
        {  
            tempArray[temp] = array[LowToMiddle];  
            LowToMiddle += 1;  
        }  
        else  
        {  
            tempArray[temp] = array[MiddleToHigh];  
            MiddleToHigh += 1;  
        }  
  
        temp += 1;  
    }  
  
    if (LowToMiddle == middle + 1)  
    {  
        System.arraycopy(  
            array, MiddleToHigh, tempArray, temp, length - temp);  
    }  
    else  
    {  
        System.arraycopy(  
            array, LowToMiddle, tempArray, temp, length - temp);  
    }  
  
    System.arraycopy(tempArray, 0, array, low, length);  
}  
 
 
}

0 0
原创粉丝点击