Помогите. Выводит не отсортированный массив, хотя как я понимаю сортировка идёт
void testsort(long int* a, long int n) {
int c = 0, m = 0;
for (int i = 0; i < n; i++) {
int count = 0; // Для подсчета перестановок за один проход
for (int j = i; j < n; ++j) {
if (a[i] > a[j]) {
swap(a[i], a[j]);
count++;
}
c++;
}
// Условие Айверсона
if (count == 0/* false*/) {
c--;
cout << "\nC = " << c << "\nM = " << m << "\nC + M = " << c + m << "\n\n";
for (int p = 0; p < 10; p++) {
cout << a[p] << " ";
}
return;
}
else {
m += count;
}
}
}
int main(){
setlocale(0, "");
long int ng = 10, i=0, b=0,a=0,n=10,h=10;
int t = 0;
long int* y = new long int[h];
cout << "тра-та-та\n"<< "Сравнение простых алгоритмов сортировки массивов.\n"<<"ля-ля-ля" << "\n\n";
// Тестовый прогон
cout << "Введите элементы целочисленного массива [1,10]:\n";
for (int p = 0; p < ng; p++) { cin >> y[p]; }
cout << "Результат сортировки:";
testsort(y, 10);
cout <<"\n";
Недавно начал кодить. Надеюсь на помощь
Ответы (1 шт):
Автор решения: AR Hovsepyan
→ Ссылка
Уберите все лишные переменные, выводы и условия из программы. Вами же ставленные условия не позволяют функции выполнить вывод, а переменные в функции абсолютно лишные, потому что функции они практически не нужны. Вообшем, я просто убрал все лишнее:
void testsort(long int* a, const int n) {
for (int i = 0; i < n; i++) {
for (int j = i; j < n; ++j) {
if (a[i] > a[j]) {
swap(a[i], a[j]);
}
}
}
for (int p = 0; p < n; p++) {
cout << a[p] << " ";
}
}
int main() {
const int ng = 10;
long int* y = new long int[ng];
cout << "Введите элементы целочисленного массива [1,10]:\n";
for (int p = 0; p < ng; p++) { cin >> y[p]; }
cout << "Результат сортировки:";
testsort(y, 10);
return 0;
}
