Сортировка вставками - 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; }
Объяснение кода листинга программы
В этом коде реализуется алгоритм сортировки вставками.
- Создается массив a с тремя элементами, которые нужно отсортировать.
- Задаются начальные значения переменных i, j, tmp.
- Цикл for запускается три раза (по количеству элементов в массиве).
- В каждой итерации цикла, текущий элемент массива (tmp) вставляется в отсортированную до этого момента последовательность.
- Для нахождения места, куда нужно вставить текущий элемент, используется вложенный цикл for, который сдвигает элементы правее, пока не найдет элемент, который больше текущего.
- После нахождения места, элемент вставляется туда.
- После завершения циклов выводится отсортированный массив. Код работает корректно, но его можно оптимизировать, добавив проверку на уже отсортированный массив, чтобы избежать лишних операций.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д