python快速排序的草稿程式碼
阿新 • • 發佈:2018-12-16
import sys sys.setrecursionlimit(10000) #low=0 #high=4這樣的寫法太low """ 函式名稱:partition 功能:確定一個基準值,使基準值左邊是小於它的數,右邊是大於等於它的數 返回值:基準值的位置 """ #a[5]=[1,2,23,1,0]#陣列?元組怎麼用?列表用[],元組用(),這可不是C語言哦 def partition(a,low,high):#需要把low,high的值作為形參傳遞進去嗎 #for i in range(high):#i是從1到5都取得到嗎?還是0到5,還是0到4,需要i嗎?是0到4都會取到,i和排序次數有什麼聯絡嗎? #i in range(5):#這句有必要嗎?這句話的語法是這樣的嗎?下面的語句會縮排嗎,這是一句錯誤的寫法,缺了for # 還是用if(low<high)? pivot = a[low] if (low < high): # pivot = a[low] 這裡之前就出過錯誤,在第一躺裡面,pivot是不會變的。 python裡面表示陣列長度的語句是? # while(low<high&&pivot<a[high])#這裡需要=嗎?不需要也是說的過去的,就是說a[high]=pivot時,把a[high]放在前面 # 但是如果下面的while裡面也沒有=,就會出現死迴圈,讓a[low]=a[high] while (low < high) and (pivot <= a[high]): # 不是用&&表示並 # while (low<high & & a[low] < a[high]): 是要用pivot來比較的 # 這裡 5是陣列的長度,陣列的長度可以用high表示,不一定非要len,low是0,high是4 # 第一位與最後一位進行比較,若a[1]>a[0],那麼i++,是用a[i]和a[i+1]進行比較還是用j與pivot比較呢? # 如果第二位比第一位大,i++ high = high - 1 # 而不是high-- # 如果第二位比第一位小,要把第二位移到第一位之前,是嗎?yes # j從最後一位向前移動,有low和high # 如何把比pivot小的數放在其前面? a[low] = a[high] # 接下來與旁邊的數進行比較,如何比較,沒有一定要馬上用第二個數和第一個比較,可以用第一個和第一個比,然後++的方式 # 跳到第二個 while (low < high) and (a[low] <= pivot): low = low + 1 # 並沒有讓第二個數與pivot比較,while和if的差別在哪?在於如果用了while之後,low++之後還可以讓 # a[low]與pivot比較 # 如何把它放在pivot的左邊呢?還有a[low]=pivot的情況,如果a[low]>pivot,把a[low]賦值給a[high] a[high] = a[low] # 這樣第一躺沒有實現以pivot為分界,只比較了兩個數,不會,因為if(len<high),所以會繼續比較 a[low]=pivot #pivot = a[low]#應該是把pivot的值賦給a[low] return low #忘了還要返回新的值進行下一輪的排序,誤以為for i in range(high):可以將序列排完 #print(partition(0,4)) """ 函式名稱:Quick_sort function:遞迴使用partition,完成快速排序 return:排好的列表 """ def Quick_sort(a,low,high):#形參需要加上陣列a嗎? #需要幾個pivoter呢? if(low<high):#若low=high就沒意義了 pivoter=partition(a,low,high) #如何實現for(i=0;i<high;i++)的功能? #到底是使用Quick_sort()還是partition()?看返回值,partition只能返回一個low,所以開始遞迴 Quick_sort(a,low,pivoter-1) Quick_sort(a,pivoter+1,high)#這裡是pivoter+1還是pivoter? # 為什麼使用Quick_sort(a,pivoter,high)會出現stack overflow #當if的情況不成立時,會return 嗎? else: return#返回的是什麼 #沒有主函式的話,執行的優先順序是? a=[1,2,23,1,0]#一般放在後面 Quick_sort(a,0,4) print(a)#如果不加a進去,函式會不會無法呼叫它 #為什麼結果是none?最後要打印出來的是a
最後的列印結果 G:\python\python.exe G:/python/hu/quick_sort.py [0, 1, 1, 2, 23]