python中怎麼用演算法解決這個問題?

時間 2021-05-12 01:29:27

1樓:喳 小銘

>>>import

random

>>>l=

[random

.randint(1

,20)foriin

range(20

)]>>>l[

16,3,

5,18,

8,8,

11,7,

18,15,

17,3,

15,11,

2,14,

6,3,

3,17]

>>>key=

8>>>l.

sort

()>>>l[

2,3,

3,3,

3,5,

6,7,

8,8,

11,11,

14,15,

15,16,

17,17,

18,18]

>>>[i

foriinl

ifkey

>i][2,3

,3,3

,3,5

,6,7

]>>>[i

foriinl

ifkey

,14,15

,15,16

,17,17

,18,18]

2樓:黃哥

請看看這個演算法:快速選擇(英語:Quickselect)

在電腦科學中,快速選擇(英語:Quickselect)是一種從無序列表找到第k小元素的選擇演算法。它從原理上來說與快速排序有關。

與快速排序一樣都由托尼·霍爾提出的,因而也被稱為霍爾選擇演算法。同樣地,它在實際應用是一種高效的演算法,具有很好的平均時間複雜度,然而最壞時間複雜度則不理想。快速選擇及其變種是實際應用中最常使用的高效選擇演算法。

快速選擇的總體思路與快速排序一致,選擇乙個元素作為基準來對元素進行分割槽,將小於和大於基準的元素分在基準左邊和右邊的兩個區域。不同的是,快速選擇並不遞迴訪問雙邊,而是只遞迴進入一邊的元素中繼續尋找。這降低了平均時間複雜度,從O(n log n)至O(n),不過最壞情況仍然是O(n2)。

與快速排序一樣,快速選擇一般是以原地演算法的方式實現,除了選出第k小的元素,資料也得到了部分地排序。

3樓:二貓子

快排了解一下

def quick_sort(array, l, r):

if l < r:

q = partition(array, l, r)quick_sort(array, l, q - 1)quick_sort(array, q + 1, r)def partition(array, l, r):

x = array[r]

i = l - 1

for j in range(l, r):

if array[j] <= x:

i += 1

array[i], array[j] = array[j], array[i]

array[i + 1], array[r] = array[r], array[i+1]

return i + 1

這題Python怎麼解決?

贊同mehxbcxw的回答,如果還需要排序的話,可以這樣 counter Counter s most common for k,v in counter print k,v Casper Wang demo str input Please type the string demo dir 建個字...

這個文字檔案問題用python怎麼解決

科先生 talk is cheap,show me the code!with open sample.txt r as fd reader with open result.txt w as fd writer fd writer write fd reader read swapcase 小波 ...

Python 這個問題怎麼解決?

簡單,利用列表推導式。name list 張三 王五 李四 王六七 王仁 ifi startswith 王 elsei fori inname list 張三 王仁 李四 王仁 定義變數A,預設有3個元素 A xiaoWang xiaoZhang xiaoHua print 修改之前,列表A的資料 ...