• Quick sort некорректно сортирует. Где ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Неправильно выставлены границы интервала в quickSort, должно быть так:
    void quickSort(int arr[], int p, int r)
    {
    	if (p < r) {
    		int q = partition(arr, p, r);
    
    		quickSort(arr, p, q);
    		quickSort(arr, q + 1, r);
    	}
    }


    Тестовое приложеньице:
    int main()
    {
            for (int n = 2; n <= 10; ++n) {
                    int arr[10];
                    for (int i = 0; i < n; ++i)
                            arr[i] = i;
                    printf("n = %d\n", n);
                    do {
                            int sort[10];
    
                            memcpy(sort, arr, sizeof(arr));
                            quickSort(sort, 0, n);
                            for (int i = 1; i < n; ++i)
                                    if (sort[i] < sort[i - 1])
                                            printf("!\n");
                    } while (std::next_permutation(arr, arr + n));
            }
            return 0;
    }
    Ответ написан
    1 комментарий