Как сделать частичную сортировку?
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% массива.