排序演算法-快排
阿新 • • 發佈:2021-07-13
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
每次選舉最左側的值作為基準
從陣列尾部開始查詢到第一個小於基準的值,將其複製給最左側(此次遍歷基準值的位置),然後立刻從左側開始遍歷,尋找左側第一個大於基準值的值,然後將值賦值給最右側,迴圈
直到本迴圈中左側和右側指標相遇,將基準值插入
對基準值左右部分遞迴