アルゴリズムの説明
このセクションの最初の高度な並べ替えアルゴリズムは、マージ ソートです。 「マージャー」という言葉には「合併する」という意味があります。名前が示すように、マージ ソート アルゴリズムは、まずシーケンスをサブシーケンスに分割し、そのサブシーケンスを並べ替えてから、順序付けられたサブシーケンスを完全な順序付けされたシーケンスにマージするアルゴリズムです。実際には分割統治の考え方が採用されています。
マージ ソートの平均時間計算量は O(nlgn)、最良の場合の時間計算量は O(nlgn)、最悪の場合の時間計算量も O(nlgn) です。その空間複雑さは O(1) です。さらに、マージ ソートは安定した並べ替えアルゴリズムです。
昇順ソートを例として、マージ アルゴリズムのプロセスを図 2-21 に示します。
元の配列は、8 つの数値の順序付けされていない配列です。 1 回の操作の後、8 つの数値の配列は 4 つの数値の 2 つの順序なし配列に分割されます。各操作では、すべての最小部分配列に要素が 1 つだけ含まれるまで、順序なし配列が半分に分割されます。配列内に要素が 1 つだけある場合は、配列を順序付けする必要があります。次に、プログラムは 2 つの小さな順序配列を 1 つの大きな順序配列にマージし始めます。まず、1 つの数値を含む 2 つの配列を 2 つの数値を含む配列にマージし、次に 2 つの数値を含む 2 つの配列を 4 つの数値を含む配列にマージし、最後に 8 つの数値を含む配列にマージします。すべての順序付けされた配列が結合されると、形成された最も長い順序付けされた配列がソートされます。
コードの実装
マージ ソート コード:
#归并排序 nums = [5,3,6,4,1,2,8,7] def MergeSort(num): if(len(num)<=1): #递归边界条件 return num #到达边界时返回当前的子数组 mid = int(len(num)/2) #求出数组的中位数 llist,rlist = MergeSort(num[:mid]),MergeSort(num[mid:])#调用函数分别为左右数组排序 result = [] i,j = 0,0 while i < len(llist) and j < len(rlist): #while循环用于合并两个有序数组 if rlist[j]<llist[i]: result.append(rlist[j]) j += 1 else: result.append(llist[i]) i += 1 result += llist[i:]+rlist[j:] #把数组未添加的部分加到结果数组末尾 return result #返回已排序的数组 print(MergeSort(nums))
プログラムを実行すると、出力結果は次のようになります:
[1,2,3,4,5,6,7,8]
MergeSort の場合 () 関数では、最初のステップは境界条件を判断することです。要素が 1 つだけ含まれる配列が関数のパラメーターとして渡された場合、配列内には要素のみが存在するため、配列は最小サイズに達します。配列を再帰的に分解するタスクが完了したら、分解された配列を前の再帰レベルに戻すだけです。
ソートされていない配列の長さがまだ 1 より大きい場合は、変数 Mid を使用して配列の中央の添え字を格納し、ソートされていない配列を左右の 2 つの部分配列に分割します。次に、ソートされた左右の部分配列を格納する 2 つの新しい配列を作成します。ここでは再帰の考え方が使われています。 MergeSort() 関数はリストを並べ替える関数としてのみ考えられますが、MergeSort() 関数内では関数自体を呼び出して 2 つの部分配列を並べ替えることもできます。
続いて、while ループを使用して、既にソートされた 2 つの配列をマージします。 2 つの配列内の要素の相対的なサイズを決定できないため、2 つの変数 i と j を使用して、それぞれ左側のサブ配列と右側のサブ配列で追加を待機している要素の位置をマークします。 while ループが終了すると、結果リストに追加されていない最大の要素が部分配列の最後に残っている可能性があるため、result =llist[i:] rlist[j:] ステートメントは、これらの要素が追加されないようにするためのものです。見逃されている。配列のマージが完了すると、関数は順序付けられた配列を出力します。
以上がPythonソートアルゴリズムのマージソートを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonArraysSupportVariousoperations:1)SlicingExtractsSubsets、2)Appending/ExtendingAdddesements、3)inSertingSelementSatspecificpositions、4)remvingingDeletesements、5)sorting/verversingsorder、and6)listenionsionsionsionsionscreatenewlistsebasedexistin

numpyarraysAressertialentionsionceivationsefirication-efficientnumericalcomputations andDatamanipulation.theyarecrucialindatascience、mashineelearning、物理学、エンジニアリング、および促進可能性への適用性、scaledatiencyを効率的に、forexample、infinancialanalyyy

UseanArray.ArrayOverAlistinPythonは、Performance-criticalCode.1)homogeneousdata:araysavememorywithpedelements.2)Performance-criticalcode:Araysofterbetterbetterfornumerumerumericaleperations.3)interf

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト

toaccesselementsinapythonlist、useindexing、negativeindexing、slicing、oriteration.1)indexingstartsat0.2)negativeindexingAcsesess.3)slicingextractStions.4)reterationSuseSuseSuseSuseSeSeS forLoopseCheckLentlentlentlentlentlentlenttodExeror。

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









