1. 程式人生 > 其它 >排序演算法-快排

排序演算法-快排

 1 def quickSort(arr,L,R):
 2     left = L
 3     right = R
 4     #結束條件當L>=R時即結束
 5     if L>=R:
 6         return arr
 7     stand = arr[left]
 8     #第一次迴圈晚,left 和 right 由裡面的right-=1 和 left+=1 不會無限迴圈
 9     while right>left:
10         #找到
11         while right>left and arr[right]>=stand:
12 right-=1 13 arr[left]=arr[right] 14 while right>left and arr[left]<stand: 15 left+=1 16 arr[right]=arr[left] 17 arr[left]=stand 18 quickSort(arr,L,left-1) 19 quickSort(arr,left+1,R) 20 return arr

每次選舉最左側的值作為基準

從陣列尾部開始查詢到第一個小於基準的值,將其複製給最左側(此次遍歷基準值的位置),然後立刻從左側開始遍歷,尋找左側第一個大於基準值的值,然後將值賦值給最右側,迴圈

直到本迴圈中左側和右側指標相遇,將基準值插入

對基準值左右部分遞迴