20215開発ログ(8日目)-Phythonソートアルゴリズム(Bubbleソート)+MacBookデータ復旧放棄とフォーマット完了


バブルソート昇順アルゴリズム


下図に示すように、隣接する要素を比較し、必要に応じて交換します.
(一連の比較&交換の過程をpassと呼ぶ.)
の上の図を見て、一番右の要素から比較することに注意してください.
x=[3,5,4,8,22,6,2]

n=len(x)

for i in range(n-1):           		#왼쪽에는 오름차순으로 차근차근 정렬이 되어감
  for j in range(n-1, i, -1):  		#맨 오른쪽부터 비교하는 과정
    if x[j] < x[j-1]:
      x[j], x[j-1] = x[j-1], x[j]

print(x)

+アルゴリズム改良1:for文の内部でパス数を数え、関数を終了できるかどうかを判断する


passの変数として終了しますか?
x=[3,5,4,8,22,6,2]

n=len(x)

for i in range(n-1):           		#왼쪽에는 오름차순으로 차근차근 정렬이 되어감
  passes = 0                   		#pass 횟수 0으로 지정
  for j in range(n-1, i, -1):  		#맨 오른쪽부터 비교하는 과정
    if x[j] < x[j-1] :
      x[j], x[j-1] = x[j-1], x[j]
      passes = passes +1       		#pass가 일어나면 pass에 1을 더함
    if passes == 0:
      break
    
print(x)

+アルゴリズム改良2:最後のパスで発生した点(変数last)を用いて改良

x=[3,5,4,8,22,6,2]

n=len(x)
k=0

while k < n-1:
  last= n-1
  for j in range(n-1, k, -1):  
    if x[j] < x[j-1] :
      x[j], x[j-1] = x[j-1], x[j]
      last=j

  k= last
    
print(x)
+最終MacBook…内蔵ハードディスク(HDD)データの保存を中止し、設定を再フォーマットします.
初めてのような気持ちで頑張ってください!できる