Подсчет сравнений и свопов в быстрой сортировке - PullRequest
0 голосов
/ 03 октября 2018

Я выполняю быструю сортировку по 2000 целым числам, считанным из файла, но число сравнений и обменов, которые я получаю, кажется большим.Мои счетчики в нужном месте?или что-то не так с сортировкой?

public int partition(int array[], int low, int high) 
    { 
        int pivot = array[high];  
        int i = (low-1); 
        for (int j = low; j < high; j++) 
        {
            compCounter++;
            if (array[j] <= pivot) 
            { 
                i++; 
                int temp = array[i]; 
                array[i] = array[j]; 
                array[j] = temp; 
                SwapCounter++;
            } 
        } 

        int temp = array[i+1]; 
        array[i+1] = array[high]; 
        array[high] = temp; 
        SwapCounter++;

        return i+1; 
    } 

    public void quickSort(int array[], int low, int high) 
    { 
        if (low < high) 
        { 
            int pivotPoint = partition(array, low, high); 
            quickSort(array, low, pivotPoint-1); 
            quickSort(array, pivotPoint+1, high); 
        } 
    } 

1 Ответ

0 голосов
/ 03 октября 2018

Ваши счетчики верны.

Просто быстрое предложение - переместите код подкачки в отдельную функцию swap (array, fromIndex, toIndex)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...