主要說(shuō)明冒泡排序、插入排序、合并排序以及快速排序原理,附上python實(shí)現(xiàn)代碼以及原理樣例圖
1、冒泡排序

冒泡排序邏輯
"""
冒泡排序
"""
def bubble_sort(array):
startT = time.time()
n = len(array)
for i in range(n):
already_sorted = True
for j in range(n-i-1):
if array[j] > array[j+1]:
array[j],array[j+1] = array[j+1],array[j]
already_sorted = False
if already_sorted:
break;
print("冒泡排序耗時(shí):%s" % str(time.time() - startT))
return array
2、插入排序

插入排序邏輯
"""
插入排序算法
"""
def insertion_sort(array):
for i in range(1,len(array)):
key_item = array[i]
j = i-1;
while j>=0 and array[j] > key_item:
array[j+1] = array[j]
j -= 1
array[j+1] = key_item
return array
3、合并排序

合并排序邏輯
"""
合并排序
"""
#合并數(shù)組
def merge(left,right):
#如果有一個(gè)數(shù)組為空,不需要合并
if len(left) == 0:
return right
if len(right) == 0:
return left
result = []
index_left = index_right = 0
#查看兩個(gè)數(shù)組,直到所有元素都裝進(jìn)結(jié)果數(shù)組中
while len(result) < len(left)+len(right):
#決定從哪個(gè)數(shù)組中取數(shù)據(jù)放入result
if left[index_left] <= right[index_right]:
result.append(left[index_left])
index_left+=1
else:
result.append(right[index_right])
index_right+=1
if index_left == len(left):
result+=right[index_right:]
break
if index_right == len(right):
result+=left[index_left:]
break
return result
#遞歸拆分?jǐn)?shù)組
def merge_sort(array):
if len(array) < 2:
return array
midpoint = len(array) // 2
return merge(left=merge_sort(array[:midpoint]),
right=merge_sort(array[midpoint:]))
4、快速排序

快速排序邏輯
"""
快排
"""
def quick_sort(array):
if len(array)<2:
return array
low,same,high = [],[],[]
#隨機(jī)選擇pivot元素
pivot = array[randint(0,len(array)-1)]
for item in array:
if item < pivot:
low.append(item)
elif item == pivot:
same.append(item)
elif item > pivot:
high.append(item)
return quick_sort(low)+same+quick_sort(high)