接触アルゴリズムの開始時に、私たちは無知に見えるかもしれ、私はさまざまな言語を使用して、異なる言語の多様性を実現する、そう、この場合には、失われ得ることはありません特に今、どこから始めれば分かりません自分自身、数式を解くように、あなたの定理を、アルゴリズムの動作をマスターし、彼らはあなたが良い問題解決のアイデアを開発するために持って、それを実装するコードを使用することができると思います。
ソートアルゴリズムのエントリから始めてみましょう:
以下は、A = [3,1,5,6,7,2,4,8]ソートするための不規則アレイであります
1.簡単なバブルソート
初期のソートアルゴリズムに、バブリングすることはほとんど可能な限り非常に暴力的な原則と列挙法は、1つの比較、シンプルでラフ(非常に*非常に暴力的な)を実施することにより、すべての要素が出ているものを列挙するために、それをしようとします。
以下のコードの場合:
'' ' バブルソート ' '' (A)bubblesorft DEF: 第一のレイヤ#サイクル、コントロール配列番号:範囲(LEN(A))におけるIのために 範囲のjについて(LEN(A )-i)。 第二層、制御素子よりも後方要素サイズの前に#サイクル IF 1 + J <LEN(A): IF [J]> [+ J. 1]: TEMP = [+ J. 1] [J + +1] [J] = A [J] = TEMP 戻り A = [3,1,5,6,7,2,4,8] A = bubblesorft(A) プリント(A)を
[1、2、3、4、5、6、7、8]
アルゴリズムは単純明快で、何回かのコードを自分でノック、その後、読んでいないならば、あなたはすぐにハハ、実現されます
これは、すべてが単純ではなく、単純なマージソートアルゴリズムの次の、完成していない、あなたはそれを実現するために来ます。
2.シンプルだが単純ではないマージソート
あなたがの完全な理解を得るという理由だけで、非常に単純な再帰的な人々が実際に返すようにするとき理解したいの周りに言って、この時間は、再帰の価値を理解したかったと述べました。
最初の選別に二つの部分にソート配列をマージし、別々にソートされ、その後、アレイがソートさの2つの部分の一方に分類。
フィーリングで、次のコード:
'' ' ソートアルゴリズムマージ ''' DEF mangesorft(A) <=(A)lenの場合、1: 戻り リストを2つに分割されている半分= INT(LEN(A)/ 2)# 最初= mangesorft([0 :ハーフ])#再帰的な、最後の要素点が小さく、要素まで、そしてその後のソートされたリストを返すように 第二= mangesorft:([半分 LEN(A)])# そのような再帰を要素まで、より小さな最後のサブ要素、およびその後のソートされたリストを返す I = 0 J = 0 のnewAは= [] Iに<ながらlenの(最初の)またはJ <lenの(秒):制御サイクルの#番号 場合iがlenの(最初の)とj < <LEN(秒):#のキーマージソートは、制御要素インデックスをマージする 場合、最初の[I] <= SECOND [J]: newA.append(はじめ[I]) I + = 1 他: newA.append(SECOND [J]) のJ = 1 +。 他: 私がlen <場合(最初): newA.append(最初の[I]) 、I + = 1 であればJ <LEN(秒): newA.append(次の[J]) J + = 1つの 戻りのnewA 場合__name__ == "__main__": A = [3,1,5,6,7,2,4,8] A = mangesorft(A) プリント(A)
[1、2、3、4、5、6、7、8]
これら2つのアルゴリズムの比較では、あなたがいない、もしそうなら、おめでとう、あなたは一緒に引っ張ることができると思うものを小さな手は、アルゴリズムのピットに飛び込みました
これら二つの成果物で、無秩序な配列またはリストのための出会いのアルゴリズムの問題の後、Nazanは最初にそれのシーケンスを行に、これは是非、問題解決の最初のステップです!