归并排序出现错误,
public class demo1 {
static int[] a=new int[11000];
public void merge_sort(int q[], int l, int r){
if (l == r) return;//若数组中只有一个或没有数,就直接返回了
int mid = (l+r)>>1;
merge_sort(q, l, mid);
merge_sort(q,mid +1 ,r);
int k = l, i = l, j = mid + 1;
int temp[] = new int[q.length];
while (i<=mid && j<=r){
if (q[i] < q[j]) temp[k++] = q[i++];
else temp[k++] = q[j++];
}
while (i <= mid) temp[k++] = q[i++];
while (j <= r) temp[k++] = q[j++];
for (i = 1, j = 0; i <= r; i++, j++) q[i] = temp[j];
}
public static void main(String[] args) {
int []qwe = {3,2,1,1};
demo1 demo = new demo1();
demo.merge_sort(qwe,0, qwe.length-1);
System.out.println(Arrays.toString(qwe));
}
}
运行结果却是:
求解惑