HackerRank: мой алгоритм быстрой сортировки работает слишком медленно

Может кто-нибудь объяснить мне, почему этот алгоритм быстрой сортировки имеет плохую производительность?

Я следовал учебному пособию от Дерека Банаса, поэтому думал, что он будет оптимальным.

public static void quickSort(int[] arr, int left, int right){
    if(left>=right) return;
    int pivot = arr[right];
    int index = partition(arr, left, right, pivot);
    quickSort(arr, left, index-1);
    quickSort(arr, index+1, right);
}

private static int partition(int[] arr, int left, int right, int pivot){
    int leftPointer = left-1;
    int rightPointer = right;
    while(true){
        while(arr[++leftPointer]<pivot && leftPointer<=rightPointer); 
        while(arr[--rightPointer]>pivot && rightPointer>leftPointer); 
        if(leftPointer>=rightPointer) break;
        else{
            //swap values
            int temp = arr[leftPointer];
            arr[leftPointer] = arr[rightPointer];
            arr[rightPointer] = temp;
        }
    }
    int tempP = arr[leftPointer];
    arr[leftPointer] = arr[right];
    arr[right] = tempP;
    return leftPointer;

}

0 ответов

Другие вопросы по тегам