Java 使用一个数组合并排序

Java 使用一个数组合并排序,java,mergesort,array-algorithms,Java,Mergesort,Array Algorithms,我的合并排序算法如下 正如我们所知,这个算法需要额外的内存。有没有办法只使用一个数组进行排序?在单个数组中排序 我的合并排序算法是: //LeftPos = start of left half; //RightPos = start of right half void Merge(int A[ ], int LeftPos, int RightPos, int RightEnd) { int LeftEnd = RightPos – 1; int TmpPos = 1

我的合并排序算法如下

正如我们所知,这个算法需要额外的内存。有没有办法只使用一个数组进行排序?在单个数组中排序

我的合并排序算法是:

//LeftPos = start of left half;
//RightPos = start of right half
void  Merge(int A[ ], int LeftPos, int RightPos, int RightEnd) 
{
    int LeftEnd = RightPos – 1;
    int TmpPos = 1
    int NumElements = RightEnd – LeftPos + 1;
    int TempArray[NumElements];
    while(leftPos <= LeftEnd && RightPos <= RightEnd)
        if(A[LeftPos] <= A[RightPos])
            TmpArray[TmpPos++] = A[LeftPos++];
        else
            TmpArray[TmpPos++] = A[RightPos++];
    while(LeftPos <= LeftEnd)   //Copy rest of first half   
        TmpArray[TmpPos++] = A[LeftPos++];
    while(RightPos <= RightEnd) //Copy rest of second half      TmpArray[TmpPos++] = A[RightPos++];
    for(int i = 1; i <= NumElements; i++) //Copy TmpArray back
        A[LeftPos++] = TmpArray[i];
}
检查以下链接:

符合您问题的Java代码:

您正在寻找的技术已经到位,对于将来的搜索,您可以使用它在internet上找到更好的结果。

可能的重复项