У меня есть этот массив:
int [] myarray = {17, 6, 8};
Каков оптимальный способ сортировки этого массива в псевдокоде?
Спасибо!
У меня есть этот массив:
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
<
на =<
позволит избежать ненужного обмена, если a[0]
==a[1]`.
- person James Bucanek; 17.12.2019
Чуть более эффективная версия, чем сортировка с развернутым пузырьком, не оптимальная, но все же достаточно простая.
if (el1 > el2) Swap(el1, el2)
if (el2 > el3) {
Swap(el2, el3)
if (el1 > el2) Swap(el1, el2)
}
Может на этом рисунке показано дерево решений для сортировки трех элементов. помогает:
sorted(a)
с моей псевдофункциейsorted
, которая сортирует на месте :) - person Felix Kling   schedule 25.01.2011int [] myarray = {6, 8, 17};
:) - person Rafał Dowgird   schedule 25.01.2011