一行寫快排

2022-05-26 11:12:09 字數 853 閱讀 4709

今天旁邊的大神提了句,其實快排可以一行**實現的,是真的嗎?

沒想到用這種方法盡然實現了

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】

def

partition(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指向的數和關鍵資料交換,使得關鍵資料左邊...