Гномья сортировка (англ. Gnome sort) — алгоритм сортировки, похожий на сортировку вставками, но в отличие от последней перед вставкой на нужное место происходит серия обменов, как в сортировке пузырьком.
Алгоритм концептуально простой, не требует вложенных циклов. Время работы O(n²). На практике алгоритм может работать так же быстро, как и сортировка вставками.
Алгоритм находит первое место, где два соседних элемента стоят в неправильном порядке и меняет их местами. Он пользуется тем фактом, что обмен может породить новую пару, стоящую в неправильном порядке, только до или после переставленных элементов. Он не допускает, что элементы после текущей позиции отсортированы, таким образом, нужно только проверить позицию до переставленных элементов.
Пример:
Wiki: Гномья сортировка
Алгоритм концептуально простой, не требует вложенных циклов. Время работы O(n²). На практике алгоритм может работать так же быстро, как и сортировка вставками.
Алгоритм находит первое место, где два соседних элемента стоят в неправильном порядке и меняет их местами. Он пользуется тем фактом, что обмен может породить новую пару, стоящую в неправильном порядке, только до или после переставленных элементов. Он не допускает, что элементы после текущей позиции отсортированы, таким образом, нужно только проверить позицию до переставленных элементов.
Пример:
int* GnomeSort(int* Array, int SizeArray) { int i=1; int j=2; int tmp; while(i<SizeArray) { if(Array[i]<Array[i-1]) { i=j; j+=1; } else { tmp=Array[i-1]; Array[i-1]=Array[i]; Array[i]=tmp; i=i-1; if(0==i) { i=j; j=j+1; } } } return Array; }
Wiki: Гномья сортировка
Комментариев нет:
Отправить комментарий