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