python 快速排序
生活随笔
收集整理的這篇文章主要介紹了
python 快速排序
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Jul 12 13:04:05 2021@author: ledi """def quick_sort(alist, start, end):"""快速排序"""if start >= end: # 遞歸的退出條件returnmid = alist[start] # 設(shè)定起始的基準(zhǔn)元素print('mid=',mid)low = start # low為序列左邊在開(kāi)始位置的由左向右移動(dòng)的游標(biāo)print('low=',low)high = end # high為序列右邊末尾位置的由右向左移動(dòng)的游標(biāo)print('high=',high)while low < high:# 如果low與high未重合,high(右邊)指向的元素大于等于基準(zhǔn)元素,則high向左移動(dòng)print('mid=',mid,'alist[high]=',alist[high],'alist[low]=',alist[low])while low < high and alist[high] >= mid:high -= 1print('high-->',high)alist[low] = alist[high] # 走到此位置時(shí)high指向一個(gè)比基準(zhǔn)元素小的元素,將high指向的元素放到low的位置上,此時(shí)high指向的位置空著,接下來(lái)移動(dòng)low找到符合條件的元素放在此處print('alist=',alist) # 如果low與high未重合,low指向的元素比基準(zhǔn)元素小,則low向右移動(dòng)print('mid=',mid,'alist[high]=',alist[high],'alist[low]=',alist[low])while low < high and alist[low] < mid:low += 1print('low-->',low)alist[high] = alist[low] # 此時(shí)low指向一個(gè)比基準(zhǔn)元素大的元素,將low指向的元素放到high空著的位置上,此時(shí)low指向的位置空著,之后進(jìn)行下一次循環(huán),將high找到符合條件的元素填到此處print('alist=',alist)print('##'*12)# 退出循環(huán)后,low與high重合,此時(shí)所指位置為基準(zhǔn)元素的正確位置,左邊的元素都比基準(zhǔn)元素小,右邊的元素都比基準(zhǔn)元素大alist[low] = mid # 將基準(zhǔn)元素放到該位置,# 對(duì)基準(zhǔn)元素左邊的子序列進(jìn)行快速排序quick_sort(alist, start, low - 1) # start :0 low -1 原基準(zhǔn)元素靠左邊一位# 對(duì)基準(zhǔn)元素右邊的子序列進(jìn)行快速排序quick_sort(alist, low + 1, end) # low+1 : 原基準(zhǔn)元素靠右一位 end: 最后if __name__ == '__main__':alist = [ 55, 44, 33, 22, 11]quick_sort(alist, 0, len(alist) - 1)print(alist)總結(jié)
以上是生活随笔為你收集整理的python 快速排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 交叉熵求导
- 下一篇: leetcode- 两数之和