Как сделать частичную сортировку?

void BubbleSort(int a[],int n) {
    std::chrono::high_resolution_clock::time_point t5 = std::chrono::high_resolution_clock::now();
    int tmp,i, L = 0, R = n - 1, pos = 0, assigns=0, cmp=0;
    
    while(L<R) {
        i = L;
        pos = -1;
        for (int j = i+1; j < n; ++j) {
            if (a[i] > a[j]) {
                tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
                pos = i;
                ++assigns;
            }
            ++i;
            ++cmp;
            
        }
        if (pos == -1) {
            break;
        }

        R = pos;
        i = R;

   }
    std::chrono::high_resolution_clock::time_point t6 = std::chrono::high_resolution_clock::now();
    std::chrono::duration<double> seconds2 = std::chrono::duration_cast<std::chrono::duration<double>>(t6 - t5);
    printf("Время работы: %.10f seconds", seconds2.count());
    cout << endl;
    cout << "Количество сравнений: " << cmp << "\nКоличество присваиваний: " << assigns << endl << endl;

}

Я пробовал подавать на вход меньший размер, но не работает. Мне надо сортировку 25%, 50%, 75% массива.


Ответы (0 шт):