Python - 最近K排序


給定的問題陳述需要找到 K 的最近值,並使用 Python 根據 K 的值對它們進行排序。因此,我們將使用基本的 Python 來解決此問題。

理解問題

手頭的問題是根據與 K 值的差值的遞增順序對列表中的給定專案進行排序。K 是給定的值,它將用於計算每個專案的差值,並根據最小差值對專案進行排列。讓我們用一個例子來理解這個問題

因此,我們可以在這裡看到差值在增加。並且我們根據專案與 K 值的差值的遞增順序對專案進行了排列。

上述問題的邏輯

為了解決給定的問題,我們將使用 abs 函式,該函式將用於計算 K 與列表專案之間的絕對差值。因此,透過使用此差值,我們將對給定的列表進行排序,這就是所需的結果。

演算法

  • 步驟 1 − 定義一個名為 item_distance 的函式,並將列表中的專案逐個傳遞給該函式,以獲取 K 和專案之間的差值。

  • 步驟 2 − 獲取差值後,我們將初始化 K 的值和列表作為專案。

  • 步驟 3 − 因此,在 sorted 方法的幫助下,我們將根據 item_distance 對列表中的給定專案進行排序。

示例

# Define the function to find the distance
def item_distance(item):
   return abs(item - K)
   
#Initialize the value of K
K = 10  

#The list of items
items = [10, 4, 12, 15, 3, 6, 7, 9]

# Sort the input list as per the distance from K
sorted_items = sorted(items, key=item_distance)

print(sorted_items)

輸出

[10, 9, 12, 7, 6, 15, 4, 3]

複雜度

程式碼根據 K 的值對給定的輸入列表進行排序所需的時間為 O(n log n),其中 n 是輸入列表的大小。因為我們使用了 Python 中的內建函式 abs 來計算 K 和列表項之間的絕對差值。並使用了 sorted 函式,該函式需要 O(n log n) 的時間來對元素進行排序。

結論

我們已經成功地為給定的問題建立了程式碼,該問題是根據專案和 K 之間的差值對專案進行排序。因為我們使用了兩個內建函式 abs 和 sorted 來最大程度地減少執行時間。此演算法對於排序此類問題非常有效。

更新於: 2023年10月17日

82 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.