MergeSort算法可以高效地求解逆序数对。在此代码中,通过利用归并排序的过程中计数逆序数对。该算法的核心思想是分治策略,首先将数组分成两半,再分别进行排序并计数合并过程中产生的逆序对。具体Matlab实现代码如下:

function [sortedArray, count] = mergeSort(arr)
    if length(arr) <= 1
        sortedArray = arr;
        count = 0;
        return;
    end
    mid = floor(length(arr) / 2);
    [left, leftCount] = mergeSort(arr(1:mid));
    [right, rightCount] = mergeSort(arr(mid+1:end));
    [sortedArray, splitCount] = mergeAndCount(left, right);
    count = leftCount + rightCount + splitCount;
end

function [mergedArray, count] = mergeAndCount(left, right)
    mergedArray = [];
    count = 0;
    i = 1; j = 1;
    while i <= length(left) && j <= length(right)
        if left(i) <= right(j)
            mergedArray = [mergedArray, left(i)];
            i = i + 1;
        else
            mergedArray = [mergedArray, right(j)];
            count = count + length(left) - i + 1;
            j = j + 1;
        end
    end
    mergedArray = [mergedArray, left(i:end), right(j:end)];
end

在该代码中,通过递归调用mergeSort函数实现了归并排序,并在mergeAndCount函数中计算了逆序数对的数量。最终返回的count即为逆序对的数量。