冒泡:

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 # 这种赋值有问题,这段代码有个偶现的bug,可能和这里有关
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 冒泡、二分查找的更多相关文章

  1. Python实现二分查找

    老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...

  2. python实现二分查找算法

    二分查找算法也成为折半算法,对数搜索算法,一会中在有序数组中查找特定一个元素的搜索算法.搜索过程是从数组中间元素开始的 如果中间元素正好是要查找的元素,则搜索过程结束:如果查找的数大于中间数,则在数组 ...

  3. python关于二分查找

    楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72 ...

  4. Python递归函数,二分查找算法

    目录 一.初始递归 二.递归示例讲解 二分查找算法 一.初始递归 递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但 ...

  5. Python 实现二分查找(递归版)

    二分查找 为什么使用二分查找: python中的列表,一般取值为遍历这个列表,直到取到你想要的值,但是如果你的列表是一个有着百万元素的列表呢,那样for循环遍历列表就会很慢,可能会循环几十万次,才能找 ...

  6. 数据结构和算法:Python实现二分查找(Binary_search)

    在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...

  7. 【Python】二分查找算法

    二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...

  8. python实现二分查找与冒泡排序

    二分查找,代码如下: def binarySearch(l, t): low, high = 0, len(l) - 1 while low < high: 'print low, high' ...

  9. Python递归 — — 二分查找、斐波那契数列、三级菜单

    一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否 ...

  10. python基础--二分查找

    # 二分查找 def sort_search(lst,key): """ 二分查找 :param lst: 有序数列 :param key: 要查找的关键值 :retur ...

随机推荐

  1. mysql 开发基础系列19 触发器

    触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表. 1.1 创建触发器 -- 语法: CREATE TRIGGER trigger_name trigger_time tri ...

  2. sudo的使用和配置

    1 sudo是什么 Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像 ...

  3. SOAP报文转成JAVA对象

    在今天以前我还没有用过代码解析过SOAP报文,更别提转成JAVA对象了,今天的任务中报文这个模样的,(为防止数据信息,以下数据我故意打乱了防止泄露什么信息.) <?xml version=&qu ...

  4. NET Core微服务之路:弹性和瞬态故障处理库Polly的介绍

    前言 上一节中我们介绍了Ocelot的常见使用配置,通过json配置文件,实现API网关的请求处理.和一个使用DownStream扩展下游中间件,来实现Http转RPC的简单实现,功能不算强大,但可以 ...

  5. MySQL/MariaDB表表达式(3):视图

    视图是表表达式的一种,所以它也是虚拟表.对视图操作的时候会通过语句动态的从表中临时获取数据. 1.创建.修改视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED ...

  6. element-ui el-input只显示下划线

    只需要增加样式 .el-input__inner { width: 220px; border-top-width: 0px; border-left-width: 0px; border-right ...

  7. 开源的api文档管理系统

    api文档 php 在项目中,需要协同开发,所以会写许多API文档给其他同事,以前都是写一个简单的TXT文本或Word文档,口口相传,这种方式比较老土了,所以,需要有个api管理系统专门来管理这些ap ...

  8. Python初级面试语法<一>

    可变对象与不可变对象 可变对象存的是地址,地址不变,但地址指向的值可以变(引用类型).类型:list.dict.set等 不可变对象直接存值,值变了,就是另一个对象了(值类型).int.float.t ...

  9. Java 学习笔记 正则表达式

    2019.3.27 正则表达式 \w 单词字符,匹配[]a-zA-Z_0-9] \w{3} 表示匹配3个字符()ab8,abc,a_c,a5_...) \w+ 至少一个,1到多个 \w* 0个到n个 ...

  10. Android破解学习之路(十六)—— dll破解的IL指令

    IL指令介绍 IL是.NET框架中中间语言(Intermediate Language)的缩写. 使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不 ...