在java中合并排序。有时排序有时会进入无限循环

时间:2014-04-10 19:07:39

标签: java sorting loops merge infinite

我在java中编写合并排序。 它有时会对数组进行排序,有时会进入不定式循环。我无法找到原因。 谢谢你的帮助。

// M - Main Array
                int Aindex = 0;
                int Bindex = 0;
                int A[] = new int[(int) (M.length + 1) / 2];
                int B[] = new int[(int) M.length / 2];
                while (!sakartotsAugosi(M)) { // While not sorted Look below for this function.
                    Aindex = 0;
                    Bindex = 0;
                    for (int Mindex = 0; Mindex < M.length; Mindex++) {
                        if ((Mindex + 1) % 2 != 0) {
                            A[Aindex] = M[Mindex];
                            Aindex++;
                        } else {
                            B[Bindex] = M[Mindex];
                            Bindex++;
                        }
                    }


                    Aindex = 0;
                    Bindex = 0;
                    for (int Mindex = 0; Mindex < M.length; Mindex++) {
                        if (Aindex == A.length) {
                            M[Mindex] = B[Bindex];
                            Bindex++;
                        } else if (Bindex == B.length) {
                            M[Mindex] = A[Aindex];
                            Aindex++;
                        } else if (A[Aindex] <= B[Bindex]) {
                            M[Mindex] = A[Aindex];
                            Aindex++;
                        } else if (B[Bindex] <= A[Aindex]) {
                            M[Mindex] = B[Bindex];
                            Bindex++;
                        }
                    }

/////////////////////////////////////////////// ////////////////////////////////////////

public boolean sakartotsAugosi(int M[]) {
    for (int i = 1; i < M.length; i++) {
        if (M[i - 1] > M[i]) {
            return false;
        }
    }
    return true;
}

0 个答案:

没有答案