Pythonでバケットソートアルゴリズムを記述するにはどうすればよいですか?
Sep 19, 2023 pm 02:19 PM
python
アルゴリズム
バケットソート
バケット ソート アルゴリズムを Python で記述するにはどうすればよいですか?
はじめに:
バケット ソートは非比較ソート アルゴリズムです。その原理は、ソート対象の要素を異なるバケットに分割し、各バケット内の要素をソートし、最後に要素を取り出すことです。並べ替えられた結果を取得するには、すべてのバケット内の要素を削除します。バケット ソートは、ソート対象の要素が特定の範囲内にあり、均等に分散している状況に適しています。時間計算量は O(n k) で、n はソート対象の要素の数、k はバケットの数を表します。
具体的な手順:
- 並べ替える要素の最小 min_value と最大 max_value を決定します;
- バケット数 Bucket_num を計算します。最も簡単な方法は次のとおりです。ソートされた要素の範囲は、分割されるバケットの数に応じて均等に分割されます。
- リストで表されるバケット_num 個のバケットを作成し、各バケットは空のリストに初期化されます。具体的な方法は、ルールに従って要素を対応するバケットにマッピングすることであり、この例では、要素を(max_value-min_value 1)で除算し、四捨五入して、最小値を減算してバケットの添字を取得します。
- 空ではない各バケット内の要素を並べ替えるには、任意の並べ替えアルゴリズムを使用できます。
- すべてのバケットをダンプして、並べ替えた結果。
- コード実装:
def bucket_sort(arr): min_value, max_value = min(arr), max(arr) bucket_num = len(arr) bucket_size = (max_value - min_value + 1) // bucket_num + 1 # 计算桶的大小,加1是为了包含最大值 buckets = [[] for _ in range(bucket_num)] # 创建桶 # 将元素放入桶中 for val in arr: index = (val - min_value) // bucket_size # 计算桶的下标 buckets[index].append(val) # 对每个桶中的元素进行排序 for bucket in buckets: bucket.sort() # 将所有桶中的元素依次取出 sorted_arr = [] for bucket in buckets: sorted_arr.extend(bucket) return sorted_arr
ログイン後にコピー
テスト:
arr = [4, 1, 9, 6, 3, 7, 5, 8, 2] sorted_arr = bucket_sort(arr) print(sorted_arr) # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
ログイン後にコピー
概要:
バケット ソートは、要素が比較的均等に分散される、シンプルで効果的なソート アルゴリズムです。の場合、線形時間計算量を達成できます。ただし、バケット ソートの欠点は、追加のメモリ領域が必要になることであり、メモリ消費量が多い場合には適用できない可能性があります。実際のアプリケーションでは、並べ替える要素の分布に基づいて適切な並べ替えアルゴリズムを選択することが重要です。以上がPythonでバケットソートアルゴリズムを記述するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7142
9


Java チュートリアル
1534
14


Laravel チュートリアル
1257
25


PHP チュートリアル
1205
29


CakePHP チュートリアル
1155
46



Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用
