-python達成するためにバブルソートアルゴリズム

 
1
「」 ' 2 バブルソートアルゴリズムの最適化 3つの バブルソートの基本的な特徴は、隣接する要素の交換のみです。 4 開始境界から、ダウン電流の最大値の先頭に単一のパスが境界上にあることができる; 5 、スイッチング動作が発生しない場合、それは配列が順序付けされていることを示します。 6 '' ' 7 。8 。9 #の アルゴリズムは:ほぼバブルソート 10 DEF BubbleSort_1(ARR): 11 ソートする配列の上限を制御しながら蓄積アウターループは、いくつかのラウンドをソートし、即ちAは[0..i]であります部分ソートさ 12 隣接する要素を比較し、[0..i-1]を走査する内部ループのを、そして上部の最大値に交換要素値の上面によって 13である ため I レンジ(LEN(ARR) - 。1 、0、-1 ): 14 用の J レンジ(I): 15 IF ARR [J]> ARR [J + 1 ]: 図16は、 ARR [J]、ARR [J + 1] = ARRは、[J + 1 ]、ARR [J] 17。 プリント' 二次ソート結果の%のD:'%(8-I)、終了= '' 18がある ため J における範囲(LEN(ARR)) 。19 プリント' %3D 'ARR [J]) 20は 21である 22である #の アルゴリズムII:改良されたバブルソート、交換動作フラグがセット 23である DEF BubbleSort_2(ARR): 24 I 範囲(LEN(ARR) - 1、0、-1 ): 25 フラグに=偽 スイッチング動作させることなく仮定 26 J における範囲(0、I)は: 27 IF ARR [J]> ARR [J + 1 ]: 28 ARR [J]、ARR [J + 1] = ARR [J + 1 ]、ARR [J] 29 フラグに真= #1 組のインターワーキングフラグ 30 IF ないフラグに: 31は、 BREAKの 何交換動作が完了されていないソートを表し、ループを終了し 32 33である 34である #の アルゴリズムII:双方向バブル(シェーカーソート)、交換作業の領域が発生していないので配列は、あなたは、上下の境界を走査する走査範囲還元ラウンドダウン更新することができる 35 DEF BubbleSort_3(ARR): 36 ロー、ハイ= 0、LEN(ARR) - 1。 37 ながら低< 高: 38であります ロー= swapPos #が低最後に発生するスイッチング動作の位置をとる 39 のための J における範囲(低、高): 順次走査A [-low..high 1] 40 IF ARR [J]> ARR [Jの+ 1。]: 41である 。ARR [Jの+ =] 1 ARR [J]、ARR [Jの+ 1 ]、ARR [J] 42である = swapPos J 43は swapPosハイ= ソートする境界配列は、最後に出現する位置の切り替え操作で変更 44である ため J における範囲(高、低、-1): #1 逆[低1..highの+]スキャン 45を IF ARR [J] <ARR [J - 1 ]: 46であります ARR [J]、ARR [J - 1] = ARR [J - 1 ]、ARR [J] 47 swapPos = J 48 ロー= swapPos 低いスワップ操作の位置最後発生をソートする配列の結合を変更します

 

おすすめ

転載: www.cnblogs.com/liangxfng/p/11537391.html