python实现简单算法
#选择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实现简单算法的更多相关文章
- 教你用Python实现简单监督学习算法
教你用Python实现简单监督学习算法 监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段.即便是在无监督学习兴起的近日,监督学习也依旧是入门机器学习的钥匙. 这篇监督学习教程 ...
- Python数据结构与算法设计总结篇
1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- 【转】你真的理解Python中MRO算法吗?
你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- 以图搜图(一):Python实现dHash算法(转)
近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python数据结构与算法之问题求解
懂得计算机的童鞋应该都知道,一条计算机程序由数据结构跟算法两大部分组成.所以,其实不管你使用哪种计算机语言编写程序,最终这两部分才是一个程序设计的核心.所以,一个不懂得数据结构与算法的程序员不是一个好 ...
随机推荐
- matplotlib 三维旋转
# 当elevation=0时,视角为沿x1负方向看,当elevation=90时,视角沿x3负方向看.# 当azimuth=0时,视角为沿x1负方向看,当azimuth=90时,视角沿x2负方向看. ...
- Docker 路径更改
本文环境在Windows 10 下docker docker 默认不修改路径全部安装在c盘会非常大,等发现c盘占了20多g再想办法...... 默认情况下 1.linux 容器下Docker 容器的安 ...
- 数位DP HDU - 2089 不要62
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- LeetCode 871 - 最低加油次数 - [贪心+优先队列]
汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处. 沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 s ...
- [Day16]常用API(正则表达式、Date类、DateFormat类、Calendar类)
1.正则表达式(Regular Expression,regex)-是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串 1.1匹配规则: (1)字符:x -代表的 ...
- poj2362
#include<iostream> using namespace std; ]; int total; int rec; int n; ]; int flag; int flag1; ...
- 队列->队列的表示和实现
文字描述 队列是和栈相反,队列是一种先进先出(first in first out,缩写FIFO)的线性表,它只允许在表的一端进行插入,而在另一端进行删除.和生活中的排队相似,最早进入队列的元素最早离 ...
- Win10 将slim加入PYTHONPYTH
1.LINUX 命令 export PYTHONPATH=$PYTHONPATH:'pwd':'pwd'/slim 2.Windows 命令 SET PYTHONPATH=%cd%;%cd%\slim ...
- python摸爬滚打之day032 管道 数据共享 进程池
1.进程池 当有成千上万个任务需要被执行的时候,有了进程池我们就不必去创建大量的进程. 首先,创建进程需要消耗时间,销毁进程(空间,变量,文件信息等等的内容)也需要消耗时间, 第二即便开启了成千上万的 ...
- redis基础2