**步驟:
(1)將列表中的首元素單獨放進乙個列表中,每次都與列表中的第乙個元素做比較
(2)當元素大於第乙個元素時,元素進入乙個新的存放比首元素大的列表中
(3)當比較的元素比首元素小時,元素進入乙個新的存放比首元素小的列表中
(4)最後都比較完成時將三個列表相結合將比首元素小的列表放前面,比首元素大的列表放在後面,首元素所在的列表放在中間。
**原理:
第一輪次
第一次比較:
mid[22] lista[89,523,489,8452,10,123] lessbeformid biggerafter[45]
第二次比較:
mid[22] lista[523,489,8452,10,123] lessbeformid biggerafter[45,89]
第三次比較:
mid[22] lista[489,8452,10,123] lessbeformid biggerafter[45,89,523]
第四次比較:
mid[22] lista[8452,10,123] lessbeformid biggerafter[45,89,489]
第五次比較:
mid[22] lista[10,123] lessbeformid biggerafter[45,89,489,8452]
第六次比較:
mid[22] lista[123] lessbeformid[10] biggerafter[45,89,489,8452]
第七次比較:
mid[22] lista lessbeformid[10] biggerafter[45,89,489,8452,123]
**實現:
lista = [22,45,89,523,489,8452,10,123]#定義乙個列表
def quicksort(list):
if len(list)<2:#當列表的長度小於2時
return list#返回原列表
else:
mid = list[0]#將首元素放進mid列表中
lessbeforemid= [i for i in list[1:] if i<=mid]#使用推導式將比首元素小的元素放入列表中
biggerafter = [i for i in list[1:] if i > mid]#使用推導式將比首元素大的元素放入列表中
finallylist = quicksort(lessbeforemid)+[mid]+quicksort(biggerafter)#將列表組合起來
return finallylist
print (quicksort(lista)) python 冒泡法 快速排序法
import random 匯入隨機數 def bubble sort l 定義函式 for i in range len l 1 因為如果有n個數,如果n 1個都已經排列好了,所以就已經排列好了,所以要 1,也可以不用 1,但是會造成資源的浪費 for j in range len l i 1 因...
快速排序法
一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...
快速排序法
include stdafx.h include vos.h define table mid machine name midmachine define table midmach colname id id define table midmach colname ip ip define t...