-3
Этот код представляет собой простой способ слияния, разделив и совместив аналогию. Я получаю несортированный массив как вывод, который совпадает с входным массивом. Пожалуйста, укажите ошибку в этом коде:Слияние Сортировка в java
import java.util.*;
class Merge {
public static void main(String[] args) {
int n,i;
Scanner sc = new Scanner(System.in);
System.out.println("enter size of array");
n = sc.nextInt();
int b[] = new int[n];
System.out.println("enter array");
for (i=0;i<n;i++) {
b[i] = sc.nextInt();
}
System.out.println("sorted array");
int c[] = sort(b);
for (i=0;i<n;i++) {
System.out.println(c[i]);
}
}
static int[] sort(int[] a) {
int i;
int l = a.length;
if (l<2) {
return a;
}
int mid = l/2;
int left[] = new int[mid];
int right[] = new int[l - mid];
for (i=0;i<mid;i++) {
left[i] = a[i];
}
for (i=mid;i<l;i++) {
right[i-mid] = a[i];
}
sort(left);
sort(right);
merge(left,right,a);
return a;
}
static void merge(int[] left , int[] right , int[] a) {
int p=0,q=0,r=0;
while (p<left.length && q<right.length) {
if (left[p]<=left[q]) {
a[r] = left[p];
p++;
} else {
a[r] = right[q];
q++;
}
r++;
}
while (p<left.length) {
a[r] = left[p];
p++;
r++;
}
while (q<right.length) {
a[r] = right[q];
q++;
r++;
}
}
}
запустить его через отладчик. – Kayaman
Я бы порекомендовал вам использовать отладчик и попытаться выяснить это самостоятельно. Это поможет вам еще больше, и вы также узнаете некоторые полезные вещи. – UnholySheep