Блинная сортировка (не могу найти ошибку в коде) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
 
void flip(int *data, int m, int n)
{
    int swap, i;
 
    for (i = m; i < --n; i++)
    {
        swap = data[i];
        data[i] = data[n];
        data[n] = swap;
    }
 
}
int main()
{
    int i, j, a, maxNumPos, moves = 0, length, data[100];
 
    scanf_s("%d", &length);
 
    if (length < 2)
        return 0;
 
    for (j = 0; j < length; j++)
    {
        scanf_s("%d", &data[j]);
    }
 
    for (i = length; i > 1; i--)
    {
        maxNumPos = 0;
        for (a = 0; a < i; a++)
        {
            if (data[a] > data[maxNumPos])
                maxNumPos = a;
        }
 
        if (maxNumPos == (i - 1))
            continue;

        if (maxNumPos >= 0)
        {
            flip(data, maxNumPos, i);
            moves++;
        }
 
    }
 
    for (j = 0; j < length; j++)
    {
        printf("%d ", &data[j]);
    }
    return moves;
}
допустим ввод массив из 5: 23, 3, 5, 2, 1 вывод: 1636348, 1636352, 1636356, 1636360, 1636364 (должно быть: 1, 2, 3, 5, 23) Обычно сам читаю в инете, но материала про блинную сортировку на понятном мне языке немного (опыт программирования 2 недели =/)

Решение задачи: «Блинная сортировка (не могу найти ошибку в коде)»

textual
Листинг программы
printf("%d ", data[j]);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5