Python 3は、2つの順序配列コードの例を統合します。
第一の考え方は、二つの数を一つの配列に結合してから並べ替えて、問題は泡が出てきて、早く並べられました。二つの配列の秩序性を使用していません。よくないです
第二の考え方は、循環的に2つの配列の頭の位置要素の大きさを比較し、新しい配列に頭の要素を入れて、古い配列から削除します。そのうちの1つの配列の長さが0になるまで。空ではない古い行列の残りを新しい配列の最後に追加します。はい、
第二の考え方の順序付けアルゴリズムとテストコードは以下の通りである。
改善して、インデックス要素の比較法に変えて、頭の要素の比較法に取って代わる:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
第二の考え方は、循環的に2つの配列の頭の位置要素の大きさを比較し、新しい配列に頭の要素を入れて、古い配列から削除します。そのうちの1つの配列の長さが0になるまで。空ではない古い行列の残りを新しい配列の最後に追加します。はい、
第二の考え方の順序付けアルゴリズムとテストコードは以下の通りである。
def merge_sort(a, b):
ret = []
while len(a)>0 and len(b)>0:
if a[0] <= b[0]:
ret.append(a[0])
a.remove(a[0])
if a[0] >= b[0]:
ret.append(b[0])
b.remove(b[0])
if len(a) == 0:
ret += b
if len(b) == 0:
ret += a
return ret
if __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))
上記の過程を反省しました。removeの方法を使うべきではないです。よく考えてみると、removeの方法は時間がかかります。一番簡単ではないです。改善して、インデックス要素の比較法に変えて、頭の要素の比較法に取って代わる:
def merge_sort(a, b):
ret = []
i = j = 0
while len(a) >= i + 1 and len(b) >= j + 1:
if a[i] <= b[j]:
ret.append(a[i])
i += 1
else:
ret.append(b[j])
j += 1
if len(a) > i:
ret += a[i:]
if len(b) > j:
ret += b[j:]
return ret
if __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))
これは基本的に一番簡単な方法です。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。