您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Python二分查找和冒泡算法怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python二分查找和冒泡算法怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
# 二分法查找 有序序列中的值
def binary_search(sorted_seq, val):
"""復雜度 O(log(N))"""
if not len(sorted_seq):
return 'Not Find'
low = 0
high = len(sorted_seq) - 1
while low <= high:
mid = (high + low) // 2
if sorted_seq[mid] == val:
return mid
elif sorted_seq[mid] > val: # 說明 在 low - mid
high = mid - 1
else: # 說明 在 mid - high
low = mid + 1
# 如果還存在特殊情況? val 不在其中的時候 比如 【1,3,4】 val=2
if sorted_seq[low] == val:
return low
else:
return 'Not Find'
# 冒泡排序
def bubble_sort(seq):
"""
拿出一個數 和其余的數目依次比較 如果 發現大于其中的一個數 就立刻互換位置 復雜度 O(n^2)
:param seq:
:return:
"""
n = len(seq)
for i in range(n):
for j in range(n-1):
if seq[i] > seq[j]:
seq[i], seq[j] = seq[j], seq[i]
# 插入排序
def insertion_sort(seq):
"""一次拿出一個數 到 已經排序的數組里面 按順序插入"""
n = len(seq)
for i in range(1, n):
cur_val = seq[i]
cur_pos = i
# 向左遍歷查找 發現小于的就互換位置
while cur_pos and cur_val < seq[cur_pos - 1]:
seq[cur_pos] = seq[cur_pos - 1]
cur_pos -= 1 # 繼續向左偏移
seq[cur_pos] = cur_val
# 歸并排序
def merge_sort(seq):
""" 分解元素 分別排序 最后合在一起 復雜度 O(nlogn)"""
n = len(seq)
if n < 2:
return seq
l_arr = seq[:n//2]
r_arr = seq[n//2:]
new_l_arr = merge_sort(l_arr)
new_r_arr = merge_sort(r_arr)
new_array = []
while 1:
if not len(new_l_arr):
new_array += new_r_arr
return new_array
if not len(new_r_arr):
new_array += new_l_arr
return new_array
if new_r_arr[0] < new_l_arr[0]:
new_array.append(new_r_arr[0])
new_r_arr.pop(0)
else:
new_array.append(new_l_arr[0])
new_l_arr.pop(0)
if __name__ == '__main__':
seq = [1,7,4,2,5,3,9,6,8]
src = merge_sort(seq)
print(src)
讀到這里,這篇“Python二分查找和冒泡算法怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。