Сортировка вставками - C (СИ) (77587)

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

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

Сортировка вставками массивов из 3-х элементов Не до конца сортирует
int tmp[3],pos,b=0;
    for(int i=1;i<(int)*res;i++)
    {
        for(int l=0;l<3;l++)
        {
            tmp[l]=sort[i][l];
        }
        if(sort[i][b]==sort[(i-1)][b])
        {
            b++;
            i--;
        }
        else 
        {
        for(pos=i-1;pos>=0 && sort[pos][b]>tmp[b];pos--)
        {
            for (int l=0;l<3;l++)
            {
            sort[(pos+1)][l]=sort[pos][l];
            }
        }
        for (int l=0;l<3;l++)
        {
        sort[(pos+1)][l]=tmp[l];
        }
        b=0;
        }
    }
 
        for (int j=0;j<(int)*res;j++)
        {
            for (int q=0;q<3;q++)
            {
           fprintf (fp,"%d ",sort[j][q]);
            }
    }

Решение задачи: «Сортировка вставками»

textual
Листинг программы
#include "stdio.h"
 
int main()
{
    int a[] = {24,4,2};
    int i, j, tmp;
    for (i = 1; i < 3; ++i) // цикл проходов, i - номер прохода
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности 
            a[j + 1] = a[j];    // сдвигаем элемент направо, пока не дошли
        a[j + 1] = tmp; // место найдено, вставить элемент    
    }
 
    for (int q = 0; q < 3; q++)
    {
        printf ("%d ",a[q]);
    }
    getchar();
    getchar();
    return 0;
}

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

В этом коде реализуется алгоритм сортировки вставками.

  1. Создается массив a с тремя элементами, которые нужно отсортировать.
  2. Задаются начальные значения переменных i, j, tmp.
  3. Цикл for запускается три раза (по количеству элементов в массиве).
  4. В каждой итерации цикла, текущий элемент массива (tmp) вставляется в отсортированную до этого момента последовательность.
  5. Для нахождения места, куда нужно вставить текущий элемент, используется вложенный цикл for, который сдвигает элементы правее, пока не найдет элемент, который больше текущего.
  6. После нахождения места, элемент вставляется туда.
  7. После завершения циклов выводится отсортированный массив. Код работает корректно, но его можно оптимизировать, добавив проверку на уже отсортированный массив, чтобы избежать лишних операций.

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


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

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

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