0
これはCormen、Leiserson、Rivestの本で説明した挿入ソートの実装です。唯一の違いは、whileループの代わりにinner forループを使用していることです。私はそれが少しclunkyだと思う。どのように私はこれを簡単にすることができますか?この挿入ソートルーチンをどのように改善できますか?
def isort(list):
if len(list) <= 1:
return list
# pick the next item for insertion from LEFT to RIGHT
for j in range(1, len(list)):
current = list[j]
# invariant: [0:j-1] is sorted
# range(0,j) returns everything up j-1
# Pick the next item to compare from RIGHT TO LEFT
ip = j-1
inorder = False
moved = False
for i in reversed(range(0,j)):
ip = i
if list[i] > current:
# move it to the right
list[i+1] = list[i]
moved = True
else:
inorder = True
break;
if moved:
if inorder:
list[ip+1] = current
else:
list[ip] = current
return list
「どうすれば簡単にできますか?」あなたのリストに '.sort()'を呼んでください。 – robert
@robert OPは、特定のリストをソートするのではなく、挿入ソートアルゴリズムを理解することに明らかです。 – mjv
私は挿入の並べ替えとPythonを学んでいます。これは教育的な運動です。 –