public class PartitionTest {//分治算法 合并排序代码
private void mergeSort(int a[], int left,int right){
if(left == right)
{
return;
}
mergeSort(a,left,(left+right)/2-1);
mergeSort(a,(left+right)/2+1,right-1 );
merge(a,left,right);
}
private void merge(int a[], int left, int right) {
int l = left, mid = (left + right) / 2, i = 0;
int k = mid + 1;
int[] arr = new int[left - right + 1];//存放排好序的数组
while (l <= mid && k <= right) {
if (a[l] > a[k]) {
arr[i] = a[k];
i++;
k++;
} else {
arr[i] = a[l];
i++;
l++;
}
}
if (l > mid) {
for (; k <= right; i++, k++) {
arr[i] = a[k];
}
} else {
for (; l <= mid; i++, l++) {
arr[i] = a[l];
}
}
for (int j = 0; j < left - right + 1 ; j++) {
a[left++] = arr[j];
}
}
public static void main(String[] args) {
int[] a = {2,0};
new PartitionTest().mergeSort(a,0,a.length-1);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
为什么爆栈了,同样类似的算法在c++ 我没有爆 不明白啊 这里的算法可能有点问题