100 daysofcodeの41日:いくつかのアルゴリズムについての基本


これは、コードとPythonの100日間の私の41日目です.今日はソートアルゴリズムの基本を学びました.私は、アルゴリズムは問題の一歩一歩の説明であることを知っているとしても、それは問題解決の体系的な思考です.
“アルゴリズム”は、私の意見では、ソフトウェア開発でそれに過度の重量を持っている一般的な用語です.
単純な真実は、アルゴリズムは物事を行う方法です.彼らは一種の問題を解決するためのプロセスです.

バブルソート
バブルの並べ替えは、繰り返しリストを繰り返して、隣接する要素を比較し、彼らが間違った順序にある場合、それらをスワップ、単純なソートアルゴリズムです.リストがソートされるまでリストを通過します.
list = [ 4,5,2,3,6]
for num in range(len(list)-1,0,-1):
    for i in range(num):
        if list[i]>list[i + 1]:
            temp = list[i]
            list[ i + 1] = list[i]
            list[i + 1] = temp
print(list)
プットアウト.
[4, 5, 5, 5, 6]

挿入ソート
挿入ソートは、一度に最終ソート配列(またはリスト)1つのアイテムを構築する単純なソートアルゴリズムです.選択ソートやバブルソートのような他のほとんどの単純なアルゴリズムよりも実用性が高い.
arr = [1,3,2,45,6,74,5]
for i in range(len(arr)):
    key = arr[i]
    j = i - 1
    while j >=0 and key < arr[j]:
        arr[j + 1] = arr[j]
        j -= 1
        arr[j + 1] = key
print('Sorted array is:')
for i in range(len(arr)):
    print('%d'%arr[i])
出力は
Sorted array is:
1
2
3
5
6
45
74

選択ソート
それは、場所の並べ替えアルゴリズムです.これは、最大のリストに無効であり、一般的に同様の挿入ソートよりも悪い実行します.
A = [5,4,3,2,1]
for i in range(len(A)):
    min_idx = i
    for j in range(i + 1,len(A)):
        A[min_idx] > A[j]
        min_idx = j
    A[i],A[min_idx] = A[min_idx],A[i]
print('sorted array:')
for i in range(len(A)):
    print('%d'%A[i])
sorted array:
1
5
4
3
2

ヒープソート
Heapsortは、バイナリヒープデータ構造に基づく比較ベースのソート技術です.これは、最初に最大要素を見つけ、最後に最大要素を配置する選択ソートに似ています.残りの要素は同じプロセスを繰り返す
def heapify(arr, n, i):
    largest = i
    l = 2 * i + 1
    r = 2* i + 2
    if l < n and arr[i] < arr[l]:
        largest = l

    if r < n and arr[largest] < arr[r]:
        largest = r
    if largest != i:
        arr[i],arr[largest] = arr[largest],arr[i]
        heapify(arr,n,largest)
def heapSort(arr):
    n = len(arr)
    for i in range(n//2 -1,-1,-1):
        heapify(arr,n,i)
    for i in range(n-1,0,-1):
        arr[i],arr[0]= arr[0],arr[i]
        heapify(arr,i,0)
arr = [4,2,1,3,5,6]
heapSort(arr)
n = len(arr)
print('Sorted array is:')
for i in range(n):
    print('%d'%arr[i]),


プットアウト.
Sorted array is:
1
2
3
4
5
6
の41日と* *バブルソート*挿入ソート*選択ソート