Đối với bài tập về nhà java của tôi Tôi đang đấu tranh để viết một lớp sắp xếp hợp nhất đệ quy. Hiện tại tôi có 3 phương thức là một "trình điều khiển" phương pháp để bắt đầu đệ quy, phương pháp đệ quy mergeSort
và phương pháp merge
. Tùy thuộc vào những biến tôi thay đổi đầu ra của tôi là một mảng của tất cả các số không hoặc mảng ban đầu của tôi theo cùng một thứ tự. Điều duy nhất là phương thức mergeSort
gốc phải có trong một mảng và phương thức merge
không thể trả về bất kỳ thứ gì. Bất kỳ trợ giúp nào được đánh giá caoRắc rối với Hợp nhất Sắp xếp
import java.util.Arrays;
public class merge2 {
public static void main(String[] args){
int []a={22,45,1,4,89,7,0};
mergeSort(a);
System.out.println(Arrays.toString(a));
}
public static void mergeSort(int [] a){
mergeSort(a,0,a.length-1);
}
public static void mergeSort(int []a, int beg,int end){
if(beg<end){
int mid=(beg+end)/2;
mergeSort(a,beg,mid);
mergeSort(a,mid+1,end);
merge(a,beg,mid,end);
}
}
private static void merge(int []a, int beg, int middle, int end){
int [] d=new int[a.length];
int mid=middle+1; //start of second half of array
for(int i=0;i<d.length;i++){
if(beg<=middle && mid<=end){
if(a[beg]<=a[mid]) {
d[i]=a[beg];
beg++;
} else if(a[mid]<=a[beg]){
d[i]=a[mid];
mid++;
}
}else if(beg>middle){
d[i]=a[mid];
mid++;
}else if(mid==a.length){
d[i]=a[beg];
beg++;
}
}
for(int w=0;w<d.length;w++){
a[w]=d[w];
}
}
}
Bạn đã cố gắng bước qua mã của bạn trong một trình gỡ lỗi để xem nơi nó có vẻ đi sai? – millimoose