Упражнения C: Показать отсортированный список с помощью сортировки Gnome
Алгоритм поиска и сортировки при программировании на C: упражнение 10 с решением
Напишите программу на C для отображения отсортированного списка с помощью Gnome Sort.
Сортировка гномов - это алгоритм сортировки, первоначально предложенный доктором Хамидом Сарбази-Азадом (профессором вычислительной техники в Шарифском технологическом университете) в 2000 году и названный «глупой сортировкой» (не путать с богосортом), а затем описанный Диком. Грун и назвал "гномом рода". Алгоритм всегда находит первое место, где два соседних элемента находятся в неправильном порядке, и меняет их местами. Он использует тот факт, что выполнение обмена может привести к появлению новой неупорядоченной соседней пары только рядом с двумя замененными элементами.
Визуализация вида гномов :
Пример решения:
Образец кода C:
// https://bit.ly/2rcvXK5
#include <stdio.h>
#include <stdlib.h>
void gnome_sort(int *array, int size){
int i, tmp;
for(i=1; i<size; ){
if(array[i-1] <= array[i])
++i;
else{
tmp = array[i];
array[i] = array[i-1];
array[i-1] = tmp;
--i;
if(i == 0)
i = 1;
}
}
}
int main(void) {
int a[] = { 5, -1, 101, -4, 0, 1, 8, 6, 2, 3 };
int i;
size_t n = sizeof(a)/sizeof(a[0]);
printf("Original Array:\n");
for (i = 0; i < n; i++)
printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
printf("\nSorted Array:\n");
gnome_sort(a, n);
for ( i = 0; i < n; ++i)
printf("%d ", a[i]);
return 0;
}
Пример вывода:
Оригинальный массив: 5 -1 101 -4 0 1 8 6 2 3 Сортированный массив: -4 -1 0 1 2 3 5 6 8 101
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Предыдущая: Написать программу на C для подсчета сортировки.
Далее: Напишите программу на C, которая сортирует числа, используя метод сортировки оболочки.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования