最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Python快速排序,插入排序算法,自定義排序?qū)嵗斀?/h1>
來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:23:46
文檔

Python快速排序,插入排序算法,自定義排序?qū)嵗斀?/h4>
Python快速排序,插入排序算法,自定義排序?qū)嵗斀?這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下一、快速排序 快速排序(Quicksort)是對冒泡排序的一種改進(jìn)。由C. A. R. Hoare在1962年提出。它的基本思想
推薦度:

導(dǎo)讀Python快速排序,插入排序算法,自定義排序?qū)嵗斀?這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下一、快速排序 快速排序(Quicksort)是對冒泡排序的一種改進(jìn)。由C. A. R. Hoare在1962年提出。它的基本思想

這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下

一、快速排序

快速排序(Quicksort)是對冒泡排序的一種改進(jìn)。由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個排序過程可以遞歸進(jìn)行,以此達(dá)到整個數(shù)據(jù)變成有序序列。

快速排序,遞歸實(shí)現(xiàn)

def quick_sort(num_list):
 """
 快速排序
 """
 if num_list == []:
 return num_list
 smallList = []
 bigList = []
 middleElement = num_list[0]
 for i in num_list[1:]:
 if i <= middleElement:
 smallList.append(i)
 else:
 bigList.append(i)
 return quick_sort(smallList)+[middleElement]+quick_sort(bigList)

二、插入排序

插入排序(Insertion Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。插入排序在實(shí)現(xiàn)上,通常采用in-place排序(即只需用到O(1)的額外空間的排序),因而在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位,為最新元素提供插入空間。

插入排序

def insert_sort(num_list):
 """
 插入排序
 """
 for i in range(len(num_list)-1):
 for j in range(i+1, len(num_list)):
 if num_list[i]>num_list[j]:
 num_list[i],num_list[j] = num_list[j],num_list[i]
 return num_list

三、自定義排序
利用 sort() 或 sorted() 的 key 即可實(shí)現(xiàn)。

示例如下:

def sort_key(obj):
 sorted_list = [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]
 return sorted_list.index(obj)
 
 
if name == 'main':
 print sorted(range(10), key=sort_key)
 
# 
輸出結(jié)果如下 [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]

# 利用關(guān)鍵字在列表中的索引位置,進(jìn)行自定義排序

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python快速排序,插入排序算法,自定義排序?qū)嵗斀?/h4>
Python快速排序,插入排序算法,自定義排序?qū)嵗斀?這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下一、快速排序 快速排序(Quicksort)是對冒泡排序的一種改進(jìn)。由C. A. R. Hoare在1962年提出。它的基本思想
推薦度:

標(biāo)簽: 快速 詳解 排序
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top