Instruções
Algoritmos de ordenação/ordenação do gnomo
Gnome sort é um algoritmo de ordenação semelhante ao <a href="https://rosettacode.org/wiki/Insertion_sort" target="_blank" rel="noopener noreferrer nofollow">Insertion sort</a>, exceto que mover um elemento para sua posição correta é realizado por uma série de trocas, como no <a href="https://rosettacode.org/wiki/Bubble" target="_blank" rel="noopener noreferrer nofollow">Bubble Sort</a>.
O pseudocódigo para o algoritmo é:
<pre><b>function</b> <i>gnomeSort</i>(a[0..size-1])
i := 1
j := 2
<b>while</b> i < size <b>do</b>
<b>if</b> a[i-1] <= a[i] <b>then</b>
<i>/// for descending sort, use >= for comparison</i>
i := j
j := j + 1
<b>else</b>
<b>swap</b> a[i-1] <b>and</b> a[i]
i := i - 1
<b>if</b> i = 0 <b>then</b>
i := j
j := j + 1
<b>endif</b>
<b>endif</b>
<b>done</b>
</pre>
O que fazer:
Escreva uma função para implementar o pseudocódigo acima. A função deve retornar o array ordenado.
Critérios de Aceitação:
Critérios de Aceitação:
Testes:
- `gnomeSort` deve ser uma função.
- `gnomeSort([25, 32, 12, 7, 20])` deve retornar um array.
- `gnomeSort([25, 32, 12, 7, 20])` deve retornar `[7, 12, 20, 25, 32]`.
- `gnomeSort([38, 45, 35, 8, 13])` deve retornar `[8, 13, 35, 38, 45]`.
- `gnomeSort([43, 36, 20, 34, 24])` deve retornar `[20, 24, 34, 36, 43]`.
- `gnomeSort([12, 33, 26, 18, 1, 16, 38])` deve retornar `[1, 12, 16, 18, 26, 33, 38]`.
- `gnomeSort([3, 39, 48, 16, 1, 4, 29])` deve retornar `[1, 3, 4, 16, 29, 39, 48]`.
Console