кодесурса
«C

Упражнения C: Показать отсортированный список с помощью сортировки Gnome

script1adsense2code
script1adsense3code

Алгоритм поиска и сортировки при программировании на C: упражнение 10 с решением

Напишите программу на C для отображения отсортированного списка с помощью Gnome Sort.

Сортировка гномов - это алгоритм сортировки, первоначально предложенный доктором Хамидом Сарбази-Азадом (профессором вычислительной техники в Шарифском технологическом университете) в 2000 году и названный «глупой сортировкой» (не путать с богосортом), а затем описанный Диком. Грун и назвал "гномом рода". Алгоритм всегда находит первое место, где два соседних элемента находятся в неправильном порядке, и меняет их местами. Он использует тот факт, что выполнение обмена может привести к появлению новой неупорядоченной соседней пары только рядом с двумя замененными элементами.

Визуализация вида гномов :

«Python:

Пример решения:

Образец кода 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code