У меня есть этот массив:
int [] myarray = {17, 6, 8};
Каков оптимальный способ сортировки этого массива в псевдокоде?
Спасибо!
Я думаю, это должно быть довольно быстро (в порядке возрастания):
if (el1 > el2) Swap(el1,el2) if (el2 > el3) Swap(el2,el3) if (el1 > el2) Swap(el1,el2)
Этот код делает 2 или 3 сравнения и 4 записи в памяти в худшем случае, в отличие от другого ответа (всегда 3 сравнения и 9 записей в памяти в худшем случае).
if a[0] < a[1]: if a[1] > a[2]: if a[0] < a[2]: temp = a[1] a[1] = a[2] a[2] = temp else: temp = a[0] a[0] = a[2] a[2] = a[1] a[1] = temp else: # do nothing else: if a[1] < a[2]: if a[0] < a[2]: temp = a[0] a[0] = a[1] a[1] = temp else: temp = a[0] a[0] = a[1] a[1] = a[2] a[2] = temp else: temp = a[0] a[0] = a[2] a[2] = temp
Чуть более эффективная версия, чем развернутая пузырьковая сортировка, не оптимальная, но все же довольно простая
if (el1 > el2) Swap(el1, el2) if (el2 > el3) { Swap(el2, el3) if (el1 > el2) Swap(el1, el2) }
Май этот график , показывающий дерево решений для сортировки трех элементов, помогает: