2020 11 23 912 排序陣列

2021-10-10 19:07:50 字數 1668 閱讀 1105

快速排序學習:

從陣列中找一flag,從左右兩端向中間遍歷,將大於flag的放左邊,小於flag的放右邊,flag放中間。

填坑法比較容易理解,在flag處挖乙個坑,然後用其他的值不斷的挪坑的方法,交換位置。達到上述要求。

使用填坑法完成的

215. 陣列中的第k個最大元素

之前沒有注意對等號的處理。遇到等於的情況,不需要再進行交換alist[high]>=midelalist[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個元素的中位數...