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)
使用我的pseudosorted
函数进行排序:)许多重复项,例如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)
}