Помогите. Выводит не отсортированный массив, хотя как я понимаю сортировка идёт

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;
}
→ Ссылка