🌠クイックソート


📌 クイックソートとは?

  • データム点(pivotと呼ばれる)を定義し、データム点より小さいデータを左側(左)、大きなデータを右側(右)に収集する関数を作成します.
  • 左(左)、右(右)毎に再帰的用法を用いて同一の関数を再度呼び出し、上述の操作
  • を繰り返す.
  • 関数は、左(左)+基点(pivot)+右(右)
  • を返します.

    📌 クイックソートの実装


    👉プロセスを図で理解する




    ✅ Code

    def qsort(data):
        if len(data) <= 1:
            return data
        
        left, right = list(), list()
        pivot = data[0]
        
        for index in range(1, len(data)):
            if pivot > data[index]:
                left.append(data[index])
            else:
                right.append(data[index])
        
        return qsort(left) + [pivot] + qsort(right)
  • Python listを使用して、次の機能を実現できます.
  • def qsort(data):
        if len(data) <= 1:
            return data
        
        pivot = data[0]
    
        left = [ item for item in data[1:] if pivot > item ]
        right = [ item for item in data[1:] if pivot <= item ]
        
        return qsort(left) + [pivot] + qsort(right)
    😉 分からない場合は、ここをクリックしてください。

    📌 時間の複雑さ

  • の高速ソートの時間的複雑さはO(nlogn)O(nlogn)O(nlogn)
  • である.
  • 最悪の場合(最初のピボットが最大または最小)𝑛2)O( 𝑛^2 )O(n2)