Python でクイック ソート アルゴリズムを実装するにはどうすればよいですか?
クイック ソートは、平均 O(n log n) の時間計算量で n 個の要素のリストをソートできる、一般的で効率的なソート アルゴリズムです。この記事では、Python を使用してクイック ソート アルゴリズムのコード例を作成する方法を紹介します。
クイック ソートの基本的な考え方は、要素 (通常はリストの最初の要素) をベンチマークとして選択し、リストを 2 つのサブシーケンスに分割して、左側のサブシーケンスのすべての要素が 2 つのサブシーケンスよりも小さくなるようにすることです。ベンチマーク、右側のサブシーケンスの要素はベンチマークより小さい、すべての要素はベースラインより大きい。次に、サブシーケンスの長さが 1 または 0 になり、ソートが完了するまで、左右のサブシーケンスが再帰的に迅速にソートされます。
以下は、Python でクイック ソート アルゴリズムを実装するコード例です。
def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[0] # 选择第一个元素作为基准 less = [x for x in arr[1:] if x <= pivot] greater = [x for x in arr[1:] if x > pivot] return quicksort(less) + [pivot] + quicksort(greater)
上記のコードは、リスト arr を入力として受け入れ、ソートされたリストを返す、quicksort という関数を定義します。まず、入力リストの長さが 1 以下の場合は、長さが 0 または 1 のリストがすでに順序付けされているため、リストが直接返されます。
次に、リストの最初の要素をベース ピボットとして選択し、リストの他の要素を新しく作成した 2 つのリストに追加します (less の要素が以下になるようにします)。 pivot 以上: 要素はすべて pivot より大きくなります。
最後に、quicksort 関数が再帰的に呼び出され、less と great をすばやく並べ替え、並べ替えられたless、pivot、greater が結合されて最終的な並べ替え結果が得られます。
以下はクイック ソートのテスト例です:
arr = [4, 2, 8, 5, 1, 6, 7, 3] sorted_arr = quicksort(arr) print(sorted_arr) # 输出:[1, 2, 3, 4, 5, 6, 7, 8]
上の例では、入力リスト arr には 8 つの整数が含まれており、クイック ソート後に得られるソート結果は [1, 2 , 3、4、5、6、7、8]。
概要:
上記のコード例を通じて、Python でのクイック ソート アルゴリズムの実装が比較的簡単であることがわかります。参照要素を選択することにより、リストは 2 つのサブシーケンスに分割され、その後、サブシーケンスが再帰的にソートされ、最終的に順序付きリストが取得されます。クイック ソートは、実用的なアプリケーションで広く使用されている効率的なソート アルゴリズムです。
以上がPythonでクイックソートアルゴリズムを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。