python五大排序 五大排序演算法(Python)

2021-10-11 13:22:49 字數 2451 閱讀 7144

釋放雙眼,帶上耳機,聽聽看~!

所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。

氣泡排序

基本思想

兩個數比較大小,較大的數下沉,較小的數冒起來。

演算法描述

比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個;

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;

針對所有的元素重複以上的步驟,除了最後乙個;

重複步驟1~3,直到排序完成。

動態演示

**實現

def bubble_sort(alist):

n = len(alist)

for i in range(n-1):

for j in range(n-i-1):

if alist[j] > alist[j+1]:

alist[j],alist[j+1] = alist[j+1],alist[j]

選擇排序

基本思想

在長度為n的無序陣列中,第一次遍歷n-1個數,找到最小的數值與第乙個元素交換;

第二次遍歷n-2個數,找到最小的數值與第二個元素交換;

第n-1次遍歷,找到最小的數值與第n-1個元素交換,排序完成。

動態演示

**實現

def select_sort(alist):

n = len(alist)

for i in range(n-1):

min = i

for j in range(i+1,n-1):

if alist[min]>alist[j]:

min = j

alist[i],alist[min] = alist[min],alist[i]

插入排序

基本思想

在要排序的一組數中,假定前n-1個數已經排好序,現在將第n個數插到前面的有序數列中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。

動態演示

**實現

def insert_sort(alist):

n = len(alist)

for i in range(n-1):

j = i

while j>0:

if alist[j] < alist[j-1]:

alist[j-1],alist[j]=alist[j],alist[j-1]

else:

break

j-=1

快速排序

基本思想

先從數列中取出乙個數作為key值;

將比這個數小的數全部放在它的左邊,大於或等於它的數全部放在它的右邊;

對左右兩個小數列重複第二步,直至各區間只有1個數。

動態演示

**實現

def quick_sort(alist,start,end):

if start>=end:

return

mid = alist[start]

low = start

high = end

while low

while low mid:

high-=1

alist[low] = alist[high]

while low

low+=1

alist[high]=alist[low]

alist[low] = mid

quick_sort(alist,start,low-1)

quick_sort(alist,low+1,end)

歸併排序

基本思想

首先考慮下如何將2個有序數列合併。這個非常簡單,只要從比較2個數列的第乙個數,誰小就先取誰,取了後就在對應數列中刪除這個數。然後再進行比較,如果有數列為空,那直接將另乙個數列的資料依次取出即可。

動態演示

**實現

def merg_sort(alist):

n = len(alist)

if n<=1:

return alist

mid = n//2

left_array = merg_sort(alist[0:mid])

right_array = merg_sort(alist[mid:])

reult=

left_point,right_point=0,0

while left_point

if left_array[left_point] > right_array[right_point]:

right_point+=1

else:

left_point+=1

reult.extend(left_array[left_point:])

reult.extend(right_array[right_point:])

return reult

五大排序 演算法

插入排序 1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort nodel,int length int i,j...

八大排序(簡化為五大)

排序的功能 使用者提出要求,電腦根據使用者要求把那些記錄排列出來,給使用者帶來放方便。排序的基本操作 1 比較關鍵字的大小 2 將記錄從乙個位置移動到另乙個位置。理解 基本 一詞。後面詳講關鍵字。內部排序 要排序的資料都在記憶體中,稱為內部排序。五大排序都是內部排序。外部排序 要排序的資料一部分在記...

Python八大排序(五) 快速排序

如下 5.快速排序 交換排序 思想 先找乙個虛擬的中間值,按此中間值將所有資料分為兩部分,小於中間值的資料放在左邊大於中間值的放在右邊,在以同樣的方式處理 左右兩邊的資料直到排完序為止。def quick sort num list if len num list 2 return num list...