Pythonで選択ソートを実現
ソートの選択
実装の考え方:1つのシーケンスを2つの部分に分けて、前は秩序シーケンスで、後は無秩序シーケンスで、後の無秩序シーケンスの中の最小値を前の秩序シーケンスに追加し続け、後の無秩序シーケンスに値がないまで、最初の値を秩序シーケンスとして作成します.
コード実装:
キーはやはり二重ループのパラメータの配置で、外層ループでは0~n-1のシーケンスを取得し、その後、内部ループのiの開始値を1回も幻なく加算し、j+1=n-1のときにループが終了するまで、最後の数のときは比較する必要がないため、また最小値位置を交換するときは、内層ループが終了した後に行う.時間複雑度:O(n^2)
実装の考え方:1つのシーケンスを2つの部分に分けて、前は秩序シーケンスで、後は無秩序シーケンスで、後の無秩序シーケンスの中の最小値を前の秩序シーケンスに追加し続け、後の無秩序シーケンスに値がないまで、最初の値を秩序シーケンスとして作成します.
コード実装:
arr = [7, 4, 3, 67, 34, 1, 8] # length = 7
def select_sort(arr):
n = len(arr)
for j in range(n-1):
min = j
for i in range(j+1, n):
if arr[min] > arr[i]:
min = i
arr[min], arr[j] = arr[j], arr[min]
select_sort(arr)
print(arr) # [1, 3, 4, 7, 8, 34, 67]
キーはやはり二重ループのパラメータの配置で、外層ループでは0~n-1のシーケンスを取得し、その後、内部ループのiの開始値を1回も幻なく加算し、j+1=n-1のときにループが終了するまで、最後の数のときは比較する必要がないため、また最小値位置を交換するときは、内層ループが終了した後に行う.時間複雑度:O(n^2)