我想實現合併排序Java。代碼對我來說看起來很好,但是它將最初的未排序數組作爲輸出返回。我正在學習所有的基礎知識,所以我很難找到錯誤。Java合併排序實現
import java.util.Scanner;
class Hacker{
int[] input=new int[]{2,4,1,6,8,5,3,7};
int[] left;
int[] right;
//int size;
Scanner scan=new Scanner(System.in);
public void mergeSort(int[] input){
if(input.length<2){
return;
}
int mid=input.length/2;
left=new int[mid];
right=new int[input.length-mid];
System.arraycopy(input, 0, left, 0, left.length);
System.arraycopy(input, mid, right, 0, right.length);
mergeSort(left);
mergeSort(right);
merge(input,left,right);
}
public void merge(int[]input,int[]left,int[]right){
int i=0,j=0,k=0;
while(i<left.length&&j<right.length){
if(left[i]<right[j]){
input[k++]=left[i++];
}
else{
input[k++]=right[j++];
}
}
while(i<left.length){
input[k++]=left[i++];
}
while(j<right.length){
input[k++]=right[j++];
}
}
public static void main(String args[]){
Hacker h=new Hacker();
h.mergeSort(h.input);
for(int i=0;i<h.input.length;i++){
System.out.print(h.input[i]);
}
}
}
輸出:
24168537
改進的代碼佈局,刪除不必要的部分 –