Pythonクイックソートコードの実装

クイックソート
は、バブルソートアルゴリズムの改良版です。並べ替えにより、並べ替えるデータを2つの独立した部分に分割します。一方の部分のすべてのデータは、もう一方の部分のすべてのデータよりも小さくなります。この方法により、2つの部分のデータをすばやく並べ替えることができます。並べ替えプロセス全体データ全体が順序付けられたシーケンスになるように、再帰的にすることができます

1.ベンチマーク値を選択します:「ピボット」と呼ばれるシーケンスから要素を選択します
2.セグメンテーション:シーケンスを並べ替えます。ベンチマーク値よりも小さいすべての要素がベンチマークの前に配置され、ベンチマーク値よりも大きいすべての要素が配置されますベンチマークの前に配置されますベンチマークの後ろに配置されます(ベンチマークに等しい数はどちらの側にも行くことができます)。このセグメンテーションが終了すると、参照値の
並べ替えが完了します。3 サブシーケンスを再帰的に並べ替えます。参照値よりも小さい要素のサブシーケンスと、参照値よりも大きい要素のサブシーケンスを再帰的に並べ替えます。

最下位への再帰の判断条件は、シーケンスのサイズが0または1であるということです。この時点で、シーケンスは明らかにすでに順序付けられています。

参照値を選択するためのいくつかの特定の方法があり、この選択方法は、ソートの時間パフォーマンスに決定的な影響を及ぼします。

def parttion(arr,low,high):
    # 最小元素索引
    i = (low-1)
    pivot = arr[high]

    for j in range(low,high):

        # 当前元素小于等于pivot
        if arr[j] <= pivot:

            i += 1
            arr[i],arr[j] = arr[j],arr[i]

    arr[i+1],arr[high] = arr[high],arr[i+1] 
    return ( i+1 )     


# arr[]  排序数组
# low   起始索引
# high  结束索引

# 快速排序排序函数
def quickSort(arr,low,high):
    if low < high:
        pi = parttion(arr,low,high)

        quickSort(arr,low,pi-1)
        quickSort(arr,pi+1,high)

arr = [10,7,9,1,5]
n = len(arr)
quickSort(arr,0,n-1)
print("排列后的数组:",arr)

おすすめ

転載: blog.csdn.net/weixin_45598506/article/details/113850649