最近、Pythonを始めました。
前に書いた記事のテストを兼ねてバブルソートと選択ソートの関数を書いてみました。
バブルソート
def bubble_sort(ar):
for i in range(0,len(ar)-1):
for j in range(i+1,len(ar)):
if ar[i] > ar[j]:
ar[i], ar[j] = ar[j], ar[i]
return ar
for i in range(0,len(ar)-1):
for j in range(i+1,len(ar)):
if ar[i] > ar[j]:
ar[i], ar[j] = ar[j], ar[i]
return ar
選択ソート
def select_sort(ar):
for i in range(0, len(ar) - 1):
mini = ar[i]
k = i
for j in range(i + 1, len(ar)):
if ar[j] < mini:
mini = ar[j]
k = j
ar[i], ar[k] = ar[k], ar[i]
return ar
for i in range(0, len(ar) - 1):
mini = ar[i]
k = i
for j in range(i + 1, len(ar)):
if ar[j] < mini:
mini = ar[j]
k = j
ar[i], ar[k] = ar[k], ar[i]
return ar
実行
ar = [5,4,3,2,1]
print(ar)
ar_buble = bubble_sort(ar)
print(ar_buble)
ar_select = select_sort(ar)
print(ar_select)
print(ar)
ar_buble = bubble_sort(ar)
print(ar_buble)
ar_select = select_sort(ar)
print(ar_select)
実行結果
[5, 4, 3, 2, 1] #元のリスト
[1, 2, 3, 4, 5] #バブルソート
[1, 2, 3, 4, 5] #選択ソート
[1, 2, 3, 4, 5] #バブルソート
[1, 2, 3, 4, 5] #選択ソート
挿入ソート
2021年7月10日追記
挿入ソートについても書いてみました。
def insert_sort(a):
for i in range(1, len(a)):
temp = a[i]
if temp < a[i - 1]:
j = i
while temp < a[j - 1] and j > 0:
a[j] = a[j - 1]
j -= 1
a[j] = temp
return a
for i in range(1, len(a)):
temp = a[i]
if temp < a[i - 1]:
j = i
while temp < a[j - 1] and j > 0:
a[j] = a[j - 1]
j -= 1
a[j] = temp
return a
コメント