Подтвердить что ты не робот

Сортировка массива int с тремя элементами

У меня есть этот массив:

int [] myarray =  {17, 6, 8};

Каков оптимальный способ сортировки этого массива в псевдокоде?

Спасибо!

4b9b3361

Ответ 1

Я думаю, что это должно быть довольно быстро (по возрастанию):

if (el1 > el2) Swap(el1,el2)
if (el2 > el3) Swap(el2,el3)
if (el1 > el2) Swap(el1,el2)

Ответ 2

Этот код делает 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

Ответ 3

Немного более эффективная версия, чем развернутая сортировка пузырьков, не оптимальная, но довольно простая

if (el1 > el2) Swap(el1, el2)
if (el2 > el3) {
   Swap(el2, el3)
   if (el1 > el2) Swap(el1, el2)
}

Ответ 4

May этот рисунок, показывающий дерево решений для сортировки трех элементов: enter image description here