直接插入、折半插入、希爾排序、冒泡、快速、歸併
# 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...