#选择n^2
def selectSort(li):
for i in range(len(li)-1):
minLoc = i
for j in range(i+1,len(li)):
if li[j] < li[minLoc]:
li[minLoc],li[j] = li[j],li[minLoc] # li = [2,1,6,8,3,9,424,243,351,51]
# selectSort(li)
# print(li) #冒泡n^2 def bubbleSort(li):
for i in range(len(li)-1):
flag = False
for j in range(len(li)-i-1):
if li[j+1] < li[j]:
li[j+1],li[j] = li[j],li[j+1]
flag = True
if not flag:
return #插入n^2
def insertSort(li):
for i in range(1,len(li)):
tmp = li[i]
j = i-1
while j>=0 and li[j] >tmp:
li[j+1] = li[j]
j = j-1
li[j+1] = tmp # insertSort(li)
# print(li) #冒泡是把最大的放到最后面,选择是把最小的放前面,插入 #快速排序,nlogn def partition(li,left,right):
tmp = li[left]
while left < right:
while left < right and tmp <= li[right]:
right = right - 1
li[left] = li[right] while left < right and tmp >= li[left]:
left = left + 1
li[right] = li[left]
li[left] = tmp
return left def quickSort(li,left,right):
if left <right:
mid = partition(li,left,right)
quickSort(li,left,mid-1)
quickSort(li,mid+1,right) #归并排序nlogn def merge(li,low,mid,high):
i = low
j = mid + 1
ltmp = []
while i <= mid and j<=high:
if li[i] >= li[j]:
ltmp.append(li[j])
j = j+1
else:
ltmp.append(li[i])
i = i+1
while i<= mid:
ltmp.append(li[i])
i = i+1
while j<=high:
ltmp.append(li[j])
j = j+1
li[low:high+1] = ltmp def mergeSort(li,low,high):
if low < high:
mid = (low + high) //2
mergeSort(li,low,high)
mergeSort(li,mid+1,high)
merge(li,low,mid,high)
print(li[low:high+1]) li = [10,4,6,3,8,2,5,7]
# mergeSort(li,0,len(li)-1) #计数排序O(n)
def countSort(li):
count = [0 for i in range(11)] for x in li:
count[x] +=1
li.clear() for index,val in enumerate(count):
for i in range(val):
li.append(index) # countSort(li)
# print(li) #二分法
def BinarySearch(n,l):
print(l)
if len(l) == 0:
print('not exists')
return
mid_index = len(l) // 2
if n > l[mid_index]:
l = l[mid_index+1:]
BinarySearch(n,l)
elif n < l[mid_index]:
l = l[:mid_index]
BinarySearch(n,l)
else:
print(f'find it,index is l[{l.index(n)}]') # BinarySearch(6,li)

python实现简单算法的更多相关文章

  1. 教你用Python实现简单监督学习算法

    教你用Python实现简单监督学习算法 监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段.即便是在无监督学习兴起的近日,监督学习也依旧是入门机器学习的钥匙. 这篇监督学习教程 ...

  2. Python数据结构与算法设计总结篇

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static ...

  3. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  4. 【转】你真的理解Python中MRO算法吗?

    你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...

  5. Python数据结构与算法--List和Dictionaries

    Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...

  6. Python数据结构与算法--算法分析

    在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...

  7. 以图搜图(一):Python实现dHash算法(转)

    近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...

  8. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...

  9. python数据结构与算法之问题求解

    懂得计算机的童鞋应该都知道,一条计算机程序由数据结构跟算法两大部分组成.所以,其实不管你使用哪种计算机语言编写程序,最终这两部分才是一个程序设计的核心.所以,一个不懂得数据结构与算法的程序员不是一个好 ...

随机推荐

  1. vue发送请求----vue-resource

    使用插件vue-resource 官方提供的接口,在vue官网找不到 但在github中可以找到 安装:cnpm install vue-resource --save 第一步:注意要加--save, ...

  2. PDF文件怎么转换成PPT

    在日常办公中大家都会发现PDF文件目前是比较常见的一种文件,有的时候大家会需要将PDF转换成PPT为了去更好的演示,毕竟PPT文件在演示方面具有着较好的特点,那如何将PDF文件转换成PPT文件呢,今天 ...

  3. thinkPHP3.2使用__ROOT__显示为空,为什么

    在模板展示上传文件的时候用了__ROOT__,但是显示为空. 在网上找解决办法,改为__ROOT__/,然后就可以了

  4. Python全栈-magedu-2018-笔记2

    第二章 - Python 基础语法 基本语法 注释 -- # 标注的文本 数字 整数,不区分long和int 进制0xa.0o10.0b10 bool,2个值True.False 浮点数 1.2.3. ...

  5. Elasticsearch学习笔记(十二)filter与query

    一.keyword 字段和keyword数据类型    1.测试准备数据 POST /forum/article/_bulk { "index": { "_id" ...

  6. 2019-oo-第二单元总结

    2019-OO-第二单元总结 多线程电梯调度问题 思路综述 第一次作业 第一次作业是非常简单的傻瓜电梯,不需要考虑容量,不需要考虑调度策略,运用了基本的生产者消费者模型,而且生产者消费者模型也一直贯穿 ...

  7. linux 对MTD分区nand flash的烧写和读取

    使用mtd-utils工具实现对flash的升级分区的烧写yaffs2 yaffs2的格式是根据所使用的nandflash来制作的,不同的nandflash,得到的yaffs2是不一样的,具体可以参考 ...

  8. 阿里云RDS数据库改造迁移方案

    1. 改造原因 (1) 由于历史原因, 本应该是同一个库的表分布在两个数据库中,需要对这两个库进行合并. (2) 已有的数据库性能无法满足业务的增长需要, 查询卡,慢问题突出. (3) 当前自建Mys ...

  9. std::bind 的使用说明

    转自: https://www.cnblogs.com/cmranger/p/4743926.html ///////////////////// std::bind bind是对C++98标准中函数 ...

  10. python发送邮件心得体会

    利用本地smtp server发送 windows下尝试装了两个smtp server大概配置了下,发现没法生效,也没时间仔细研究了.装上foxmail发现以前可以本地发送的选项已经无法找到. 不带附 ...