Просмотр полной версии : Гномий алгоритм сортировки
void gnomeSort(int[] a) {
int i = 1;
while(i < a.length) {
if(i==0 || a[i - 1] <= a[i])
i++;
else {
int temp = a[i];
a[i] = a[i - 1];
a[i - 1] = temp;
i--;
}
}
}
Задачка тем кто в теме))) Преобразовать в asm.
а по русски?
а числа 8 битные или 16 битные?
Spectramine
03.12.2016, 00:50
А в чем подвох? Элементарно же всё, алгоритм разложен по полочкам.
SAM style
03.12.2016, 02:50
Упрощенно как-то так... Не совсем по сишной реализации, но суть та же - если при проходе ничего не поменялось, это конец
label:
ld hl,array
ld b,arraysize-1
ld c,0
loop:
ld a,(hl)
inc hl
cp (hl)
jr c,noswap
ld d,(hl)
ld (hl),a
dec hl
ld (hl),d
inc hl
ld c,1
noswap:
djnz loop
dec c
jr z,label
ret
В рег.C хранится флаг "был обмен элементов".
а по русски?
а числа 8 битные или 16 битные?
Пусть будут 8 битные.
А в чем подвох? Элементарно же всё, алгоритм разложен по полочкам.
Согласен, элементарно. Просто интересная задачка для кодеров;)
Упрощенно как-то так... Не совсем по сишной реализации, но суть та же - если при проходе ничего не поменялось, это конец
Хорошая попытка, но неправильно:)
Bedazzle
03.12.2016, 09:43
Хорошая попытка, но неправильно:)
отступ на один назад надо, если был обмен - про это речь?
Ага. Ну и оптимизировать можно.
SAM style
03.12.2016, 13:05
Мда. В 3 ночи что-то проморгал этот момент :v2_dizzy_sleep2:
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot