对只有 3 个元素的 int 数组进行排序

发布于 2024-10-14 11:34:20 字数 112 浏览 3 评论 0原文

我有这个数组:

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

用伪代码对该数组进行排序的最佳方法是什么?

谢谢!

I have this array:

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

What is the optimal way to sort this array, in pseudocode?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

小梨窩很甜 2024-10-21 11:34:20

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

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

I think this should be quite fast (ascending order):

if (el1 > el2) Swap(el1,el2)
if (el2 > el3) Swap(el2,el3)
if (el1 > el2) Swap(el1,el2)
丶视觉 2024-10-21 11:34:20

该代码在最坏的情况下进行 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

This code makes 2 or 3 comparisons and 4 memory records in the worst case, as opposed to another answer (always 3 comparisons and 9 memory records in the worst case).

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
如此安好 2024-10-21 11:34:20

比展开的冒泡排序稍微更有效的版本,不是最佳的,但仍然很简单

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

Slightly more efficient version than the unrolled bubble sort, not optimal, but still quite simple

if (el1 > el2) Swap(el1, el2)
if (el2 > el3) {
   Swap(el2, el3)
   if (el1 > el2) Swap(el1, el2)
}
兰花执着 2024-10-21 11:34:20

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

May this graphic showing a decision tree for sorting three elements helps:
enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文