Algorithm 仅包含3个元素的整型数组排序

Algorithm 仅包含3个元素的整型数组排序,algorithm,optimization,sorting,pseudocode,Algorithm,Optimization,Sorting,Pseudocode,我有这个阵列: int [] myarray = {17, 6, 8}; 用伪代码对这个数组排序的最佳方法是什么 谢谢 我认为这应该很快(升序): 此代码在最坏的情况下进行2或3次比较和4条内存记录,而不是另一个答案(在最坏的情况下总是3次比较和9条内存记录) 如果a[0]a[2]: 如果a[0]

我有这个阵列:

int [] myarray =  {17, 6, 8};
用伪代码对这个数组排序的最佳方法是什么


谢谢

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


此代码在最坏的情况下进行2或3次比较和4条内存记录,而不是另一个答案(在最坏的情况下总是3次比较和9条内存记录)

如果a[0]a[2]:
如果a[0]
该版本比展开的气泡排序稍微高效一些,虽然不是最优的,但仍然非常简单

if (el1 > el2) Swap(el1, el2)
if (el2 > el3) {
   Swap(el2, el3)
   if (el1 > el2) Swap(el1, el2)
}
显示用于对三个元素进行排序的决策树可能有助于:

sorted(a)
使用我的pseudo
sorted
函数进行排序:)许多重复项,例如Easy:
int[]myarray={6,8,17}:)你的经典展开气泡排序:-)+1。我给你+1,阿达马克斯。虽然读起来很难看,但这个问题确实要求优化,而您的问题似乎满足以下要求:-)您的算法对{2,3,1}数组产生了错误的结果。@ionree当然,我修复了代码。如果你看一看,你会发现执行路径最终交换了两个元素,而每个元素都必须移动。轻微优化:替换第一本
这本书是哪本书的?这本书来自Volker Heun的《Grundlegende Algorithmen》(),不幸的是只有德语版。在Cormen等人的《算法导论》中可以找到一个非常相似的数字。我知道我在某处见过它。。。也许它也在塞吉威克的书里?但对于任何想知道它确实在CLRS中的人来说,在“线性时间排序”下。谢谢!我不敢相信有人否决了这个。当时是零下一点。我刚刚投了更高的票,现在是0。
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)
}