今天旁邊的大神提了句,其實快排可以一行**實現的,是真的嗎?
沒想到用這種方法盡然實現了
def quicksortshort(arr):return if arr== else quicksortshort([y for y in arr[1:] if yfor y in arr[1:] if y>=arr[0]] )
不過,該一行寫快排由於切片的存在,頻繁的複製會增加本身的時間複雜度。
時間複雜度小的方式【nlogn】
defpartition(li, left, right):
tmp =li[left]
while left while left < right and li[right] >=tmp:
right -= 1li[left] =li[right]
while left < right and li[left] <=tmp:
left += 1li[right] =li[left]
li[left] =tmp
return
left
defquick_sort(li, left, right):
if left mid =partition(li, left, right)
quick_sort(li, left, mid-1)
quick_sort(li, mid+1, right)#測試
import
random
li = list(range(10000))
random.shuffle(li)
quick_sort(li)
繼續待更新。。。
C自帶快排和讀入一行數
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
做一行愛一行
2013年9 月30日13 04 34 地點 公司 筆者 小菜 it界高手很多,謙虛進步自己 目前適合 android iphone 在除錯階段 內容 今天是九月的最後一天了,也沒有太多的心思的編寫 了,看看這個月的工作效率,確實不是很高。最近也在看一本書,可能很多的博友都知道這本書的 程式設計師你...
小白仿寫快排
快速排序是對氣泡排序的一種改進,使用的是分治法,主要思想為在待排序陣列中找到乙個關鍵資料 本例中為陣列第乙個數 設定兩個引數 i和 j 讓i從頭遍歷 j從尾遍歷,分別找比關鍵資料大的數和比關鍵資料小的數,找到之後讓i和j所指向的數交換,當i和j相等時,讓i和j指向的數和關鍵資料交換,使得關鍵資料左邊...