首页 > 编程语言 > 详细

python 冒泡、二分查找

时间:2019-02-21 19:06:19      阅读:139      评论:0      收藏:0      [点我收藏+]

冒泡:

import random


def _sort(_lst):
	count = 1
	while count < len(_lst):
		for i in range(0, len(_lst)-1):
			if _lst[i] >= _lst[i+1]:
				tem = _lst[i+1]
				_lst[i+1] = _lst[i]
				_lst[i] = tem
		count += 1
	return _lst


if __name__ == "__main__":
	__lst = []
	for j in range(1, 80):
		__lst.append(random.randint(1, 111))
	print("origin: %s" % __lst)
	print("sorted: %s" % _sort(__lst))

 

二分查找(判断元素是否存在):

def search(lst, des):
	if len(lst) == 0:
		return False
	else:
		while True:
			start = 0
			end = len(lst) // 2
			for ix in range(start, end+1):
				if lst[ix] == des:
					return True
			lst = lst[end:]


if __name__ == "__main__":
	__lst = [1, 2, 6]
	print(search(__lst, 6))

 

二分查找(返回index,附带测试代码):

import random


def search(lst, des):
	length = len(lst)
	start = 0
	end = length//2
	if length == 0:
		return False
	else:
		while True:
			for ix in range(start, end+1):
				try:
					if lst[ix] == des:
						return ix
				except IndexError:
					print(ix)
			if start == end:
				break
			start = end
			end = end + (length+end)//2
			if end >= length-1:
				return False


if __name__ == "__main__":
	for j in range(0, 200):
		__lst = []
		for i in range(1, 101):
			__lst.append(random.randint(1, 20))
		# print(__lst)
		index = search(__lst, 6)
		if index:
			if __lst[index] != 6:
				print(search(__lst, 6))
				print("False")

  

python 冒泡、二分查找

原文:https://www.cnblogs.com/chenadong/p/10414518.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!