Есть одномерный массив, который сортирую методом выбора, необходимо пользователю показывать каждую итерацию (чтобы он видел изменения в массиве), но вот если элементы попалась такие что достаточно 2 итераций для их сортировки, как остановить показ?
void sortirovka(int *a, int n) //функция сортировки массива
{
int count = 0;
for(int i = 0; i < n; i++)
{
bool flag = true;
int temp = a[0];
for(int j = i + 1; j < n; j++)
{
if(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
flag = false;
}
}
if(!flag)
{
count ++;
cout << "\n" << count << " перестановка: ";
for (int k = 0; k < n; k++)
{
cout << a[k] << " ";
}
}
}
}
Сортировка выбором предпологает вставку минимального элемента в начало последовательности. Это очень плохой метод сортировки, но все же вы написали его неправильно, поэтому я напишу как надо, чтоб на правильном коде показать как и когда нужно вывести массив на показ после каждой итерации:
void selection_sort(int* array, size_t n)
{
for (size_t i = 0; i < n - 1; ++i) {
size_t min = i;
for (size_t j = i + 1; j < n; ++j) {
if (array[j] < array[min]) {
min = j;
}
}
if (min != i)
swap(array[i], array[min]);
//меньший элемент на своем месте, показываем результат
for (size_t k = 0; k < n; ++k) {
cout << array[k] <<' ';
}
cout << endl;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей