Python を使用してマージ ソート アルゴリズムを実装するにはどうすればよいですか?
マージ ソートは、分割統治の考え方を使用して、大きな問題を複数の小さな問題に分割して解決し、その解決策を小さな問題にマージする一般的な並べ替えアルゴリズムです。マージ ソートの時間計算量は O(nlogn) で、さまざまなサイズのデータ セットに適しています。
以下では、Python を使用してマージ ソート アルゴリズムを実装する方法と、具体的なコード例を詳しく紹介します。
マージ ソートの基本的な考え方は、ソート対象の配列を 2 つのサブ配列に分割し、各サブ配列を個別にソートし、最後にソートされたサブ配列をマージすることです。具体的な手順は次のとおりです。
以下は、Python でマージ ソートを実装するためのサンプル コードです:
def merge(left, right): result = [] i = j = 0 while i < len(left) and j < len(right): if left[i] < right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result.extend(left[i:]) result.extend(right[j:]) return result def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left = merge_sort(arr[:mid]) right = merge_sort(arr[mid:]) return merge(left, right) # 测试 arr = [5, 2, 8, 1, 9, 3] sorted_arr = merge_sort(arr) print(sorted_arr)
実行結果は次のとおりです: [1, 2, 3, 5, 8, 9]、つまり、配列は小さいものから大きいものまで大きな順序で配置されます。
上記のコードでは、merge
関数を使用して、2 つのソートされた部分配列をマージします。まず、マージされた順序付き配列を格納する空の配列 result
を定義します。次に、2 つのポインター i
と j
を使用して、それぞれ左の部分配列と右の部分配列の開始位置を指し、左と右の部分配列の要素サイズを比較します。左側の部分配列の要素が右側の部分配列の要素より小さい場合は、左側の部分配列の要素を result
配列に追加し、i
を 1 だけ増やします。それ以外の場合は、追加します。右側の部分配列の要素 result
配列を追加し、j
を 1 ずつ増分します。最後に、左のサブ配列または右のサブ配列の残りの要素を result
配列に追加します。最後に、merge
関数は、マージされた順序付き配列を返します。
merge_sort
この関数は、マージ ソートの再帰操作に使用されます。指定された配列をソートする arr
では、まず配列の長さが 1 以下であるかどうかを判断し、1 以下である場合は配列を直接返します。それ以外の場合は、len(arr) // 2
によって配列の中間位置を見つけ、配列を 2 つのサブ配列 left
と right
に分割します。次に、left
と right
でそれぞれ merge_sort
関数を再帰的に呼び出して、取得した 2 つの並べ替えられた部分配列をマージし、マージされた順序付き配列を返します。
上記は、Python を使用してマージ ソート アルゴリズムを実装するための具体的な手順とコード例です。読者がマージソートアルゴリズムを理解するのに役立つことを願っています。
以上がPythonを使用してマージソートアルゴリズムを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。