python實現快速排序:
# 記錄第乙個坑的值,在最後做填充
i = start # 初始位置和末尾會發上改變,所以需要先做好記錄
j = end
m = end # 初始從最後面開始挖坑,所以先記錄
while
(start < end)
:while
(start < end)
and(l[start]
<= x)
:# 找出比假定的中位數x大的數,放到左邊
start +=
1if start < end:
l[m]
= l[start]
# 填坑
m = start # 記錄坑的位置
end -=
1# 將坑填後下次應該忽略填過坑的這個位置
while
(start < end)
and(l[end]
> x)
: end -=
1if start < end:
l[m]
= l[end]
m = end
start +=1
l[start]
= x
quick_sort(l,i,end-1)
# 分治(前半部分)
quick_sort(l,start+
1,j)
# 分治(後半部分)
l =[1
,0,4
,2,7
,5,9
,3]quick_sort(l,0,
len(l)-1
(l)
python資料結構與演算法
coding utf 8 import sys 使用以下語句將引數的str格式轉換為int格式 l list map int sys.argv 1 split target int sys.argv 2 def binarysearch print l print target left 0 rig...
資料結構與演算法 python
元類 基礎 冒泡 它重複地走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端,故名氣泡排序。def bubble sort alist ...
python演算法與資料結構
若n1 n2 n3 1000,且n1平方 n2平方 n3平方 n1,n2,n3為自然數 求出所有n1 n2 n3可能的組合?n1 0 n2 0 n3 0 判斷n1 n2 n3是否等於1000,之後變n3 1,n3 2,n3 3,然後再變n2 那如果變為 n1 n2 n3 2000 了呢?思路1 實現...