Выводится неверный результат - C (СИ)

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

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

Добрый вечер! Ниже приведённый код, это сортировка массива алгоритмом Шелла. Непонятно почему программа выводит не отсортированный 2D массив, а какие-то случайные числа, похожие на адрес, где сидят элементы отсортированного 2D массива.
//int mas[ n ], i, j, k, mid;
 
for ( i = 0; i < n;  i++ )
    for ( j = i; j < n; j++ )
        for ( k = j - i; k >= 0; k -= i )
        {
            if ( matrica[ i + k] >= matrica[ k ] );
                break;
        }
 
            {
                mid = matrica [ k ];
                matrica[ k ] = matrica[ i + k] ;
                matrica[ i + k ] = mid;
            }
 
            printf( "\n\n");
            printf( "%d", mid);

Решение задачи: «Выводится неверный результат»

textual
Листинг программы
void shell(int* array, int kol)
{
    if(array==NULL || *array == NULL)
        printf("Массив пуст или не создан! Сортировка невозможна!!!\n");
    else
    {
        int g[5]={5,4,3,2,1};
        int m;
        int j;
        for(int k=0; k<5; k++)
        {
            g=r[k];
            for(int i=g; i < kol; ++i)
            {
              m = array[i];
 
                 for(j=i-g; (m > array[j]) && (j >= 0); j=j-g)
                    array[j+g] = array[j];
                 array[j+g] = m;
            }
        }
    }
 
}

Объяснение кода листинга программы

Список элементов кода:

  1. Проверка на пустой или не созданный массив.
  2. Объявление временной переменной типа int для хранения значения.
  3. Объявление переменной типа int для хранения значения индекса.
  4. Внешний цикл от 0 до 5.
  5. Внутренний цикл от i до kol.
  6. Передача значения i в переменную m.
  7. Внутренний цикл от j до i-g.
  8. Условие для сравнения значений m и array[j].
  9. Если условие истинно, то перемещение значения array[j] в array[j+g].
  10. Запись значения m в array[j+g].
  11. Конец внутреннего цикла.
  12. Конец внешнего цикла.
  13. Конец функции.

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы