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数据结构与算法之问题求解
懂得计算机的童鞋应该都知道,一条计算机程序由数据结构跟算法两大部分组成.所以,其实不管你使用哪种计算机语言编写程序,最终这两部分才是一个程序设计的核心.所以,一个不懂得数据结构与算法的程序员不是一个好 ...
随机推荐
- 怎样将PDF文件转换成Excel表格
PDF文件怎样转换成Excel表格呢?因为很多的数据信息现在都是通过PDF文件进行传输的,所以很多时候,信息的接受者都需要将这些PDF文件所传输的数据信息转换成Excel表格来进行整理,但是我们应该怎 ...
- 使用Xilinx UART-LITE IP实现串口--逻辑代码实现
`timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...
- 报文分析5、UDP协议的头结构
UDP协议的头结构 源端口(2字节) 目的端口(2字节) 封报长度(2字节) 校验和(2字节) 数据 (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号.源端口和IP地址的 ...
- linux基础命令--groupmod 修改组定义
描述 groupmod命令用于修改系统上的组定义. groupmod命令通过更改组数据库(the group database)里的相关条目来修改指定的组. 语法 groupmod [选项] GROU ...
- CF1093F Vasya and Array
题目链接:洛谷 以后还是要多打CF,不然就会错过这些很好的思维题了.我dp学得还是太烂,要多总结. 首先$len=1$就直接输出0. 我们考虑$dp[i][j]$表示前$i$个数的答案,而且第$i$个 ...
- Linq中join多字段匹配
错误示范: var projectSubmitInfos = (from project in db.T_PM_Project join member in db.T_PM_Member on pro ...
- springboot读取application.properties中自定义配置
假设在application-xxx.properties中配置 user.name=yuhk 一.在Controller中读取 @Value("{$user.name}") pr ...
- Python模块安装与读取Excel
今天.想用Python读取一下Excel中的数据,从网上查找了一个样例,是要安装相关的模块: 1:到python官网下载http://pypi.python.org/pypi/xlrd模 ...
- 游戏全区全服和分区分服 QQ斗地主的设计
游戏全区全服和分区分服 QQ斗地主的设计 https://cloud.tencent.com/community/article/164816001481011910?fromSource=gwzc ...
- #20175201 实验一 Java开发环境的熟悉(Linux + Eclipse)
一.实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. (一)命令行下Java程序开发 1.过程 2.结果 调试代码遇到的问题: 解决 ...