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的資料 ...