檢視源**
快速排序:quicksort(arr, left, right)
大致思路:
1.選基準(pivot):例如以陣列最後的元素為基準。
pivot = arr[right]
設定起始指標(start)和結束指標(end)。
start = left
end = right
設定空位指標(emp).
emp = right
注:快速排序有個分冶法的思想,但也有個挖空填數的思想,最初選定基準,相當於在基準的位置挖了乙個空2.分類:將大於基準的元素放在右邊,將小於基準的放在左邊
while start!=end:
while arr[start]<=pivot and start!=end:
#向右查詢大於基準的元素,除非start與end重合
start = start + 1
if start!=end:
#start與end未重合,那start所指向的元素一定大於基準
#將大於基準的元素放在右邊挖好的空位上
#ps:此時該空位一定在右邊
arr[emp] = arr[start]
#重定向空位
emp = start
else:
#兩指標重合,且此時一定是start從左向右靠近end,emp指向end
arr[emp] = pivot
#分類完成
break
while arr[end]>=pivot and start!=end:
#向左查詢小於基準的元素,除非start與end重合
end = end + 1
if start!=end:
#start與end未重合,那end所指向的元素一定小於基準
#將小於基準的元素放在左邊挖好的空位上
#ps:此時改空位一定在右邊
arr[emp] = arr[end]
#重定向空位
emp = end
else:
#start與end重合,且一定是end從右向左靠近start,emp指向start
arr[emp] = pivot
#分類完成
break
3.遞迴排序:
if emp==left:
#基準是最小的元素,只用排序右邊的陣列
quicksort(arr, emp+1, right)
elif emp==right:
#基準是最大的元素,只用排左邊的陣列
quicksort(arr, left, emp-1)
else:
#基準兩邊都有其他元素,兩邊都需要排序
quicksort(arr, left, emp-1)
quicksort(arr, emp+1, right)
4.排序完成 JB開發之一
2 deb打包使用finker,deb安裝包也就是debian library launchdaemons launchdaemons是使用者未登陸前就啟動的服務 守護程序 library mobilesubstrate mobile substrate是乙個公共庫,可以用來動態替換記憶體中的 資料...
iOS開發之一 入門介紹
今天就介紹一下ios開發的基本的東西,有很多東西都是經常用到的而我卻經常記不住,所以還是寫下來吧。ios開發需要的開發工具是xcode,而xcode又必須執行在 os x 蘋果系統 環境下,所以我們需要蘋果系統的電腦。現在有三種途徑 第一種是在windows環境下安裝虛擬機器,這種方法最簡單,但是需...
Flask開發筆記之一
flask開發筆記之一 除了flask,常見的pythonweb框架還有 l django 全能型web框架 l web.py 乙個小巧的web框架 l bottle 和flask類似的web框架 l tornado facebook的開源非同步web框架。web 伺服器使用一種名為 web伺服器閘...