仅使用3个元素排序int数组

cla*_*amp 12 sorting algorithm optimization pseudocode

我有这个数组:

int [] myarray =  {17, 6, 8};
Run Code Online (Sandbox Code Playgroud)

在伪代码中对这个数组进行排序的最佳方法是什么?

谢谢!

nan*_*nan 21

我认为这应该很快(升序):

if (el1 > el2) Swap(el1,el2)
if (el2 > el3) Swap(el2,el3)
if (el1 > el2) Swap(el1,el2)
Run Code Online (Sandbox Code Playgroud)

  • 您经典的展开式冒泡排序:-) +1. (6认同)

ada*_*max 13

在最坏的情况下,此代码进行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
Run Code Online (Sandbox Code Playgroud)


Eri*_*nge 8

比展开的冒泡排序稍微高效的版本,不是最佳的,但仍然非常简单

if (el1 > el2) Swap(el1, el2)
if (el2 > el3) {
   Swap(el2, el3)
   if (el1 > el2) Swap(el1, el2)
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ner 5

可以显示用于对三个元素进行排序的决策树的图形有助于: 在此输入图像描述