您好,登录后才能下订单哦!
本文小编为大家详细介绍“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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。