插入 冒泡 快排 歸併排序演算法的python實現

2021-09-09 07:52:12 字數 1650 閱讀 8543

直接插入、折半插入、希爾排序、冒泡、快速、歸併

#  1.插入排序____直接插入排序

# 時間複雜度o(n^2),空間複雜度o(n)

import numpy as np

def insertsort(a):

# a : np.array

# n : number of a

for i in range(1,len(a)):

if a[i] < a[i-1]:

temp = a[i]

j = i-1

while temp=high+1:#j+1可手推

a[j+1] = a[j]

j = j-1

a[high+1] = temp

return a

a = np.array([1,7,6,10,12,5,4,3,2,8])

b = insertsort_1(a)

print(b)

# 3. 插入排序____希爾排序

def shellsort(a):

dk = int(len(a)/2)

while dk>=1:

print(dk)

for i in range(dk,len(a)):

if a[i] < a[i-dk]:

a[i], a[i-dk] = a[i-dk],a[i]

'''temp = a[i]

print(a[i])

j = i - dk

print(a[j])

while temp=temp:

high -=1

while lowlow +=1

a[high],a[low] = a[low],a[high]#交換倆位置

a[low],a[i] = temp,a[low]#交換temp與相遇i的位置

return low

#a = np.array([1,7,6,10,5,9,68,8,9,10,34])

a = np.random.randint(1,20,10)

print(a)

b = quicksort(a,0,len(a)-1)

print(b)

# 7,歸併排序,列表實現

def merge(a,b):

c =

i = j =0

while iif a[i]<=b[j]:

i += 1

else:

j += 1

while jj += 1

while ii += 1

return c

def mergesort(mylist):

if len(mylist) <= 1:

return mylist

mid = int(len(mylist)/2)

left = mergesort(mylist[:mid])

right = mergesort(mylist[mid:])

return merge(left,right)

b = np.random.randint(1,7,10)

b.tolist()

print(b)

a = mergesort(b)

print(a)

排序演算法 冒泡 插入 歸併 快排

整理了一下幾種常見的排序演算法,包括冒泡 插入 歸併 快排。還有另外幾種待整理 堆排序 希爾排序 桶排序 直接上 include include include using namespace std void swap int a,int b 最簡單的氣泡排序,時間複雜度o n n void bu...

排序演算法 氣泡排序 快排 歸併排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同...

排序演算法 插入 選擇 冒泡 快排 歸併

可以找一些帖子理解下幾類排序演算法或者聽下陳越姥姥在mooc上的資料結構 選擇類排序 交換類排序 歸併排序 基數排序 拓撲排序 從待排序的n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。void sort insert int a,in...