アルゴリズムりろんバブルソート

3909 ワード

泡の位置合わせ

  • バブルソートは、現在のインデックスと次のインデックスのサイズを比較し、次のインデックスが現在のインデックスより大きい場合、値の位置を変更するソート方法です.

  • 上図に示すように、1回のシフト操作を行うと、最大値は配列の末尾に位置します。これは,操作を繰り返すことにより,次の大数を順次ソートする方法である.最大値を求める方法と似ているように見えます。


    バブル整列のデフォルトフレーム

    # 버블 정렬
    def bubbleSort(arr):
        # 배열의 크기만큼 반복
        for i in range(len(arr)):        
            # 배열의 총 크기에서 i와 1을 뺀 만큼 반복. 그 이유는 j의 현재 인덱스가 arr의 마지막 인덱스가 되면 j와 j+1을 비교할 때, indexOutofRange 이기 때문이다.
            for j in range(0, len(arr) - i - 1):
                # 만약 현재 인덱스의 값이 다음 인덱스보다 크면, 서로의 위치를 바꿈.
                if arr[j] > arr[j + 1]: 
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]
    
    
    
    
    arr_bubble = [4, 7, 80, 50, 30, 40, 20, 10]
    
    bubbleSort(arr_bubble)
    print(arr_bubble)

    *ちなみに、降順でソートするには、不等式を次のインデックスに変更するだけです。


    *Bubbleソートは便利ですが、リスト内のすべての値を二重繰り返し文で巡回するため、時間的複雑度はO(N^2)です。効率的なソート方法ではありません。