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)
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)
比展开的冒泡排序稍微高效的版本,不是最佳的,但仍然非常简单
if (el1 > el2) Swap(el1, el2)
if (el2 > el3) {
Swap(el2, el3)
if (el1 > el2) Swap(el1, el2)
}
Run Code Online (Sandbox Code Playgroud)