快速排序學習:
從陣列中找一flag,從左右兩端向中間遍歷,將大於flag的放左邊,小於flag的放右邊,flag放中間。
填坑法比較容易理解,在flag處挖乙個坑,然後用其他的值不斷的挪坑的方法,交換位置。達到上述要求。
使用填坑法完成的
215. 陣列中的第k個最大元素
之前沒有注意對等號的處理。遇到等於的情況,不需要再進行交換alist[high]>=midel
和alist[low]<=midel
都是向後移乙個位置。start>=end
在開始等於結尾的情況下,說明只有乙個元素,不需要排序。
class
solution
:def
findkthlargest
(self, nums: list[
int]
, k:
int)
->
int:
nums=self.quick_sort(nums,0,
len(nums)-1
)return nums[
-k]def
quick_sort
(self,alist,start, end)
:if start>=end:
return alist
low=start
high=end
midel=alist[start]
while high>low:
while high>low and alist[high]
>=midel:
high-=
1 alist[low]
=alist[high]
while high>low and alist[low]
<=midel:
low+=
1 alist[high]
=alist[low]
alist[low]
=midel
self.quick_sort(alist,start,low-1)
self.quick_sort(alist,low+
1,end)
return alist
912 排序陣列
今天的每日一題是排序,這是乙個入門問題。有多種解法,當然最簡單是直接呼叫sort方法進行排序,但是這對於練習並沒有什麼意義 題目鏈結 思路1 快排 每一次劃分pivot左邊小於pivot右邊大於pivot。遞迴劃分左邊,遞迴劃分右邊。思路2 歸併排序,先讓子串行有序,然後合併兩個有序陣列。流程 遞迴...
912 排序陣列
給你乙個整數陣列 nums,請你將該陣列公升序排列。示例 1 輸入 nums 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 nums 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 nums.length 50000 50000 nums i 50000 排序的方法有很多種,本文採...
二排序陣列中位數
9.3 8設x 1.n 和 y 1.n 為兩個陣列,每個都包含n個已排好序的數。給出乙個求陣列x和y中所有2n個元素的中位數的o lgn 時間的演算法 分析與解答 若中位數字於x中,不妨設為x k 即在x中有k個元素小於等於中位數,n k個元素大於等於中位數。由於x k 為合併後的2n個元素的中位數...