LeetCode 選擇排序(python版)

2021-10-07 18:52:19 字數 1241 閱讀 9777

選擇排序

其原理為從數列中選擇最小(最大)的數,將這個數放在合適位置,然後拋開這個數的子數列找到最小(最大)的數放到合適位置,然後一直到子數列為空為止,與冒牌排序稍微有不同的是,它不是相鄰的兩個數比較,而是某個數與數列中其他所有的數比較,挑出最小(最大)呢個數。

import random

import timeit

defrandomlist

(n):

ilist =

for i in

range

(n):0,

1000))

return ilist

defbubblesort

(ilist):if

(len

(ilist)

<=1)

:return ilist

for i in

range(1

,len

(ilist)):

for j in

range(0

,len

(ilist)

-i):

if(ilist[j]

>ilist[j+1]

):ilist[j]

,ilist[j+1]

= ilist[j+1]

,ilist[j]

return ilist

defselectsort

(ilist):if

(len

(ilist)

<=1)

:return ilist

for i in

range(0

,len

(ilist)-1

):if ilist[i]

!=min

(ilist[i:])

: minindex = ilist.index(

min(ilist[i:])

) ilist[i]

,ilist[minindex]

= ilist[minindex]

,ilist[i]

return ilist

if __name__ ==

"__main__"

: ilist = randomlist(20)

print

(ilist)

print

(selectsort(ilist)

)

Leetcode 題解 排序 快速選擇

用於求解kth element問題,也就是第 k 個元素的問題。可以使用快速排序的 partition 進行實現。需要先打亂陣列,否則最壞情況下時間複雜度為 o n2 用於求解topk elements問題,也就是 k 個最小元素的問題。可以維護乙個大小為 k 的最小堆,最小堆中的元素就是最小元素。...

排序 選擇排序 選擇排序 堆排序

寫在前面 上傳github交換排序選擇排序 堆排序 選擇排序 顧名思義,我們就可以猜到,它是原則合適的元素放到合適的位置 從圖中,我們可以得到 1.用第乙個元素,和其他所有的元素進行比較,找出最小的,然後進行交換 2.然後進行,資料的遞增 3.直到資料全部有序 void selectsort int...

選擇排序 直接選擇排序

演算法思想 在每一趟的排序中,從待排序列中選出關鍵字最小或者最大的元素放在其最終的位置上 過程分析 在第i趟直接排序中,通過n i次關鍵字的比較,從n i 1個元素中選出關鍵字最小的元素 與第i個元素進行交換。經過n 1趟比較,直到表有序為止 效能分析 時間複雜度o n 2 include defi...