Сортировка вставка - C (СИ)
Формулировка задачи:
Задание:Дан одномерный массив А[10]. Выполнить сортировку четных элементов слева от минимального по возрастанию ,а сортировку всех элементов справа от минимального-по убыванию.(на языке Си)
Вот программа в которой нужно изменить сортировку выборов,на сортировку вставка,подскажите пожалуйста как именно и где нужно изменить код???!
А вот это простая программка с сортировкой вставкой
# include <stdio.h> #define N 10 int main() { int m[N]; int pos=0, i; int tmp, ccc, b; int min; for(i=0; i<N; i++) { printf("Print mas[%d]:", i); scanf("%d", &m[i]); } // int min=m[0], c, t=0; min=m[0]; for(i=1;i<N;i++) { if( m[i]<min ) { min = m[i]; pos = i; } } printf("min = %d\npos = %d",min,pos); for ( i=1;i<pos; i+=2) { tmp = m[i]; ccc=i; for ( b=i+2;b<pos;b+=2) { if (m[b]<tmp ) {// вместо (m[i]%2==0) ccc=b; tmp=m[b]; } } if (ccc != i) { m[ccc]=m[i]; m[ccc]=m[i]; m[i]=tmp; } } for (i=pos+1;i<N;i++) { tmp=m[i]; ccc=i; for (b=i+1;b<10;b++) { if (m[b]>tmp) { ccc=b; tmp=m[b]; } } if (ccc != i) { // если было выбрано m[ccc]=m[i]; m[i]=tmp; } } // вывод for(i=0;i<N;i++) { printf("\n mas [%d]=%d",i,m[i]); } }
# include <stdio.h> int main() { int m[5]; int t, pos, i, j; for(i=0; i<5; i++) { printf("Print mas[%d]:", i); scanf("%d", &m[i]); } for(i=0; i<5; i++) { t=m[i]; j=i-1; while(j>=0 && m[j]>t) { m[j+1]=m[j]; m[j]=t; j--; } } for(i=0; i<5; i++) { printf(">>mas[%d]=%d\n", i, m[i]); } return 0; }
Решение задачи: «Сортировка вставка»
textual
Листинг программы
int main() { int m[5]; int t, pos, i, j; for(i=0; i<5; i++) { printf("Print mas[%d]:", i); scanf("%d", &m[i]); } for(i=0; i<5; i++) { t=m[i]; j=i-1; while(j>=0 && m[j]>t) { m[j+1]=m[j]; m[j]=t; j--; } } for(i=0; i<5; i++) { printf(">>mas[%d]=%d\n", i, m[i]); } return 0; }
Объяснение кода листинга программы
В этом коде представлена сортировка массива методом вставки.
- Переменные:
m[5]
- массив целых чисел, размером 5;t
- временная переменная;pos
- позиция элемента в массиве;i
- счётчик для цикла;j
- счётчик для цикла;
- Цикл, в котором пользователь вводит значения элементов массива с помощью функции
scanf()
. - Цикл, в котором происходит сортировка массива методом вставки.
- Алгоритм сортировки:
- В каждой итерации, элемент с текущим индексом (
i
) сравнивается со всеми элементами, начиная с предыдущего (j
). - Если текущий элемент (
t
) меньше или равен предыдущему элементу (m[j]
), то они меняются местами. - Если текущий элемент больше предыдущего, то он вставляется в позицию
j+1
. - После каждой итерации, счётчик
j
уменьшается на единицу.
- В каждой итерации, элемент с текущим индексом (
- Вывод отсортированного массива с помощью цикла
for
и функцииprintf()
. - Результат: отсортированный массив
m[]
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д