1. 程式人生 > 資訊 >Epic 再次反擊:稱蘋果推遲 App Store 抽成調整不符合法律標準

Epic 再次反擊:稱蘋果推遲 App Store 抽成調整不符合法律標準

原理

通過選定一個基準(通常是最後一個數),把陣列排成兩部分,一部分全小於基準一部分全大於基準(通常採用兩個指標從兩頭掃描,兩頭都掃到應在另一邊的數就交換),然後對兩部分分別採用同樣的演算法,如此遞迴即可排完

程式碼實現

int partition(int* arr, int left, int right)
{
    int midPar = arr[right];
    int lPtr = left;
    int rPtr = right - 1;

    while (lPtr <= rPtr)
    {
        while (lPtr <= rPtr && arr[lPtr] < midPar)  //注意避免陣列越界
        {
            lPtr++;
        }

        while (lPtr <= rPtr && arr[rPtr] >= midPar)
        {
            rPtr--;
        }

        if (lPtr < rPtr)
        {
            swap(&arr[lPtr], &arr[rPtr]);
        }

        //print(arr, 10);

    }

    swap(&arr[lPtr], &arr[right]);

    return lPtr;
}

void sort(int* arr, int left, int right)
{
    if (left >= right)
    {
        return;
    }
    int mid = partition(arr, left, right);
    sort(arr, left, mid - 1);
    sort(arr, mid + 1, right);
}

評價

n*logn級別的時間複雜度 快但不穩定