Python実装ルックアップ配列における任意のk番目に大きいデジタルアルゴリズムの例
1476 ワード
この例では,Python実装ルックアップ配列における任意のk番目に大きいデジタルアルゴリズムについて述べる.皆さんの参考にしてください.具体的には以下の通りです.
partionメソッドを模倣し,high=lowがkより小さい場合,後半で探索し,high=lowがkより大きい場合,前半で探索する.速い列とは違って、毎回半分のソートが減っています.
出力:5番目のソート数を返します.
[-1, 2, 3, 3, 5, 6, 7, 9] 6
PS:ここでは、ソートに関するプレゼンテーションツールをお勧めします.参考にしてください.
挿入/選択/バブル/マージ/ヒル/クイックソートアルゴリズムプロセスツールをオンラインアニメーションで実証します.http://tools.jb51.net/aideddesign/paixu_ys
Pythonに関する詳細について興味のある読者は、「Pythonデータ構造とアルゴリズムチュートリアル」、「Pythonリスト(list)操作テクニック総括」、「Pythonコード操作テクニック総括」、「Python関数使用テクニック総括」、「Python文字列操作テクニック総括」、「Python入門と進級経典チュートリアル」を参照してください.
ここではPythonプログラムの設計に役立つことを願っています.
partionメソッドを模倣し,high=lowがkより小さい場合,後半で探索し,high=lowがkより大きい場合,前半で探索する.速い列とは違って、毎回半分のソートが減っています.
def partitionOfK(numbers, start, end, k):
if k < 0 or numbers == [] or start < 0 or end >= len(numbers) or k > end:
return None
low = start
high = end
key = numbers[start]
while low < high:
while low < high and numbers[high] >= key:
high -= 1
numbers[low] = numbers[high]
while low < high and numbers[low] <= key:
low += 1
numbers[high] = numbers[low]
numbers[low] = key
if low < k:
return partitionOfK(numbers, start + 1, end, k)
elif low > k:
return partitionOfK(numbers, start, end - 1, k)
else:
return numbers[low]
numbers = [3,5,6,7,2,-1,9,3]
print(sorted(numbers))
print(partitionOfK(numbers, 0, len(numbers) - 1, 5))
出力:5番目のソート数を返します.
[-1, 2, 3, 3, 5, 6, 7, 9] 6
PS:ここでは、ソートに関するプレゼンテーションツールをお勧めします.参考にしてください.
挿入/選択/バブル/マージ/ヒル/クイックソートアルゴリズムプロセスツールをオンラインアニメーションで実証します.http://tools.jb51.net/aideddesign/paixu_ys
Pythonに関する詳細について興味のある読者は、「Pythonデータ構造とアルゴリズムチュートリアル」、「Pythonリスト(list)操作テクニック総括」、「Pythonコード操作テクニック総括」、「Python関数使用テクニック総括」、「Python文字列操作テクニック総括」、「Python入門と進級経典チュートリアル」を参照してください.
ここではPythonプログラムの設計に役立つことを願っています.