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
は、コードレイアウトの改善に、不要な部分 –