バケット ソート アルゴリズムを Python で記述するにはどうすればよいですか?
はじめに:
バケット ソートは非比較ソート アルゴリズムです。その原理は、ソート対象の要素を異なるバケットに分割し、各バケット内の要素をソートし、最後に要素を取り出すことです。並べ替えられた結果を取得するには、すべてのバケット内の要素を削除します。バケット ソートは、ソート対象の要素が特定の範囲内にあり、均等に分散している状況に適しています。時間計算量は O(n k) で、n はソート対象の要素の数、k はバケットの数を表します。
具体的な手順:
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 サイトの他の関連記事を参照してください。