Python を使用して 8 つの並べ替えアルゴリズムを実装する - クイック ソート

巴扎黑
リリース: 2016-12-03 11:23:37
オリジナル
935 人が閲覧しました

クイックソートの基本的な考え方:

1回のソートでソート対象のデータを2つの独立した部分に分割し、一方の部分のすべてのデータがもう一方の部分のすべてのデータよりも小さい場合、この方法を使用してソートします。データの 2 つの部分は個別に実行され、並べ替えプロセス全体を再帰的に実行できるため、データ全体が順序付けされます。

例:

arr = [49,38,04,97,76,13,27,49,55,65]、最初の桁49をキー値として設定し、キー値より小さい数値を次から見つけます。右から左へ、見つかった数値を最初の桁に割り当てます

arr = [27,38,04,97,76,13,27,49,55,65] から、最初の桁からキー値を見つけます。大きい数値の場合は、見つかった数値を右から左に最後に見つかった数値に割り当てます

arr = [27,38,04,97,76,13,97,49,55,65]、および次に、右から左へ、左から右へ、左=右になるまで進み、ループから抜け出し、キー値をインデックス値に割り当てます。最後に、両側のグループを再帰します。

コード:

def quick_sort(lists, left, right):
    #快速排序
    if left >= right:  #当递归调用的分组为1个数时返回列表
        return lists
    key = lists[left]  #保存key值,在一轮调用结束时,存到中间值
    low = left
    high = right  #供递归调用时使用
    while left < right:  #通过下面两个循环依次交替赋值并使key值两侧为大小分组
        while left < right and lists[right] >= key:  
            right -= 1
        lists[left] = lists[right]
        while left < right and lists[left] <= key:
            left += 1
        lists[right] = lists[left]
    lists[right] = key
    quick_sort(lists, low, left-1)  #对key值左侧进行排序分组
    quick_sort(lists, left+1, high)  #对key值右侧进行排序分组
    return lists
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!