シェルソート
挿入ソートのコードを改良してシェルソートのコードを作成した。
正しく動作することは確認したが、自分にとっては実装するには複雑すぎてコードを見ただけでは正しいかどうか判断が難しい。アルゴリズムとしては明快なのであるが...。try and errorでようやく正しい答えを得ることができた。
""" Shell sort Aug. 09, 2007 """ data = [2,15,23,40,56,1,12,54,27,6,3,5,67,87,22,38,92] print data dsep = len(data)/2 while 1: for N in range(1, dsep): for i in range(N, len(data), N): tmp = data[i] j = i while tmp < data[j-N] and j>=N: data[j] = data[j-N] j -= N data[j] = tmp if dsep == 0: break dsep /=2 print data