python常用算法有哪些_python常见的排序算法有哪些?

大家都知道,关于python的算法有很多,其中最为复杂的就是python的排序算法,因为它并不是单一的,而是复杂的,关于排序算法就有好几种不同的方式,大家可以根据以下内容,结合自己的项目需求,选择一个最佳的算法。

1、插入排序:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

代码如下:#L=[5,2,3,1,6,9]

# def insert_sort(list):

# leng=len(list);//求list长度

# for i in range(1,leng):

# temp=list[i];//设置哨兵

# j=i;

# while(j>0 and list[j-1]>temp):

# list[j]=list[j-1];//大的元素后移

# j=j-1;

# list[j]=temp;//遇到比哨兵小的元素,将其设置为哨兵

# return list;

# print(insert_sort(L))

2、冒泡排序:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到

结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来

越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码如下:# def bubble_sort(list):

# leng=len(list);

# for i in range(0,leng)://控制趟数

# flag=True

# for j in range(1,leng-i):

# if list[j-1]>list[j]:

# flag=False;

# list[j-1],list[j]=list[j],list[j-1];//交换这两个数

# if flag:

# break

# return list;

# L=[9,5,6,8,4,2]

# print(bubble_sort(L))

3、选择排序:它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全

部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

代码如下:# def select_sort(list):

# leng=len(list)

# for i in range(0,leng):

# min=i //设置哨兵,假设第一个元素是最小的

# for j in range(i+1,leng):

# if list[j]

# min=j //开始寻找比哨兵小的元素。如果小则将重新设置哨兵位置

# if min!=i:

# list[i],list[min]=list[min],list[i]#交换这两个数

# return list

# L=[-4,1,2,5,3,-2]

4、快速排序:它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的

所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码如下:# def partition(list,low,high)://划分算法

# key=list[low]

# while(low

# while(low=key):high=high-1

# if low

# list[low]=list[high]

# low=low+1

# while(low

# if low

# list[high]=list[low]

# high=high-1

# list[low]=key

# return low

#

# def quick_sort(list,low,high)://快速排序算法

# if low

# pos=partition(list,low,high)

# quick_sort(list,low,pos-1)

# quick_sort(list,pos+1,high)

# return list

# L=[45,12,-32,65,28,9,-75,34]

# print(quick_sort(L,0,len(L)-1))

5、堆排序:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。

代码如下:#堆排序

# def HeapAdjust(list,pos,len)://调整堆算法

# lchild=2*pos+1

# rchild=2*pos+2

# min=pos

# if pos<(len-1)/2:

# if lchild

# min=lchild;

# if rchild

# min=rchild;

# if min!=pos:

# list[pos],list[min]=list[pos],list[min]

# HeapAdjust(list,min,len)

# return list

#

# def BuildHeap(list,len)://建堆算法

# i=len/2-1

# while(i>=0):

# HeapAdjust(list,i,len)

# i=i-1

# return list

#

# def Heap_sort(list,len)://堆排序算法

# BuildHeap(list,len)

# while(len):

# list[0],list[len-1]=list[len-1],list[0]

# len=len-1

# HeapAdjust(list,len,0)

# return list

#

# L=[45,12,-32,65,28,9,-75,34]

# print(Heap_sort(L,len(L)))

好了,以上就是关于python常见的排序算法以及用法了,相信大家结合学习,一定更加深印象。如需了解更多python实用知识,点击进入PyThon学习网教学中心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android app links,Android APP Links 配置

一. 简介在Instant App开发中&#xff0c;需要app支持Instant App Links. 本文中&#xff0c;主要介绍其作用&#xff0c;配置必需条件&#xff0c;配置的过程。二. 作用App Links 本质上是 Deep Link 的一种延伸&#xff0c;我们知道&#xff0c;Deep Link配置在Manifest之后&…

adnroid 打包问题 :compileReleaseJavaWithJavac

今天打包的时候&#xff0c;由于着急。改了些本地的变化就assembleRelease. 然后就报错&#xff1a; compileReleaseJavaWithJavac 后来网上乱找&#xff0c;。。。。 之后我想到先跑一下&#xff0c;果然是因为少一个字符串。 所以&#xff0c;以后打包的时候&#xff0c;…

联想e480一键恢复小孔_联想电脑如何一键恢复系统

联想电脑的一键还原系统在需要使用的时候直接按下一键还原按键即可&#xff0c;那么大家知道吗?今天小编与大家分享下联想电脑系统恢复的具体操作步骤&#xff0c;有兴趣的朋友不妨了解下。联想电脑系统恢复方法重要提醒&#xff1a;在您做一键恢复到出厂设置前&#xff0c;请…

【边缘计算】对边缘计算的理解与思考

来源&#xff1a;边缘计算社区在2019年第三届边缘计算技术研讨会上华为高级产业发展经理、ECC需求与总体组副主席黄还青发表了《ECC及华为在边缘计算领域的思考与实践》主题演讲&#xff0c;本文为黄还青演讲中对边缘计算理解及思考。首先我们认为边缘计算的兴起应该是在过去三…

python中注释的快捷键_【Python】注释

一、Python注释&#xff1a; 1.单行注释 python中单行注释采用 # 开头。 #!/usr/bin/python # coding:utf-8 import os import sys import optparse def print_name(): name os.path.dirname(sys.argv[0]) print name #打印输出 print_name() 2.多行注释 python 中多行注释使用…

【代码笔记】iOS-实现网络图片的异步加载和缓存

代码&#xff1a; - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.self.title"EGOImageViewDemo"; //实现网络图片的异步加载和缓存 EGOImageView *imageView [[EGOImageView alloc] initWithPlaceholderImage:[UIIm…

python executemany执行延迟_运维架构师-Python 自动化运维开发-031

*运维架构师-Python 自动化运维开发-031十九、Python3 操作数据库1、Python3 操作 MySQL1、基本介绍Python3 操作 MySQL 数据库 可以使用的模块是 pymysql 和 MySQLdb。这个两个模块都是通过自己的 API 执行原生的 SQL 语句实现的。MySQLdb 是最早出现的一个操作 MySQL 数据库的…

bilibili 解析_用 Python 抓取 bilibili 弹幕并分析!

时隔一年&#xff0c;嵩哥带来他的新作《雨幕》。他依旧认真创作&#xff0c;追求高品质&#xff0c;作品在发表之前已听了五百遍以上。如此高品质的音乐&#xff0c;大家如何评价呢&#xff1f;通过哔哩哔哩上的视频弹幕&#xff0c;感受一下。01 实现思路首先&#xff0c;利用…

2019中国科学院、中国工程院院士增选名单正式发布

来源&#xff1a;医谷医学讯 今日&#xff0c;“两院”院士2019年增选名单正式公布。中国科学院选举产生了64名中国科学院院士和20名中国科学院外籍院士。中国工程院共选举产生75位院士和29位外籍院士。2019年新当选中国科学院院士名单&#xff08;共64人&#xff0c;分学部按姓…

微信 小程序 canvas

测试手机为IPHONE6,开发者工具版本0.10.102800。开发者工具0.11.112301版本也一样 微信小程序里的canvas 非 h5 canvas有很多不一样的地方&#xff0c;以下把微信小程序的canvas叫做wxcanvas 下面全是我一点点测试出的干货&#xff0c;耐心看&#xff1a; 1.wxcanvas,不像h5can…

Android App赞赏功能,微信公众号赞赏功能升级:作者可直接收到赞赏, iOS安卓均可用...

DoNews6月6日消息 (记者 费倩文)微信公众平台发布消息称&#xff0c;公众号赞赏功能升级为“喜欢作者”&#xff0c;开启了赞赏的文章在原创文章底部有“喜欢作者”的入口&#xff0c;作者可以直接收到读者赞赏&#xff0c;在 iOS 版和 Android 版微信上都可以使用。据了解&…

基于单片机的功放protues_基于Proteus的音频放大器电路设计与仿真详解.doc

毕 业 论 文学生姓名尹有友学 号171107078学院 物理与电子电气工程学院专 业电子信息工程题 目基于Proteus的音频放大电路设计与仿真指导教师付浩 副教授/学士2015年5月论文原创性声明内容本人郑重声明&#xff1a;本论文是我个人在导师指导下进行的研究工作及取得的研究成果。…

hashcode是什么意思_什么才是 Java 的基础知识?

作者&#xff1a;晓风轻链接&#xff1a;zhuanlan.zhihu.com/p/28615617近日里&#xff0c;很多人邀请我回答各种j2ee开发的初级问题&#xff0c;我无一都强调java初学者要先扎实自己的基础知识&#xff0c;那什么才是java的基础知识&#xff1f;又怎么样才算掌握了java的基础知…

BZOJ 1305 二分+网络流

思路&#xff1a; 建图我根本没有想到啊……. &#xff08;我是不会告诉你我借鉴了一下题解的思路&#xff09; 把每个人拆成喜欢的和不喜欢的点 男 喜欢 向 男 不喜欢 连 边权为k的边 如果男喜欢女 那么 男喜欢向 女喜欢 连 1 如果男 不喜欢女 那么 男不喜欢 向 女不喜欢 连1…

迄今最详细宇宙模型建成

来源&#xff1a;科技日报一个国际科研团队最近创建了迄今最详细的大尺度宇宙模型TNG50。这一虚拟宇宙“芳龄”约138亿岁、宽约2.3亿光年&#xff0c;包含数万个正处于演化中的星系&#xff0c;星系的细节程度与单星系模型中的相当。该模型跟踪了200多亿个代表暗物质、气体、恒…

Android仿qq网络不给力,《天天酷跑》qq授权失败网络不给力?解决_图文攻略_高分攻略_百度攻略...

问&#xff1a;天天酷跑qq授权失败网络不给力&#xff1f;有神门解决办法答&#xff1a;其实这个问题小编是没有出现过&#xff0c;大部分情况是因为网速的原因&#xff0c;然后小编重新登录一下一般就可以了&#xff0c;不知道小伙伴们为什么会一直显示qq授权失败网络不给力&a…

深入浅出的mysql第三版和第二版的区别_深入浅出mysql数据库开发(第二版)笔记...

第一部分&#xff1a;【基础篇】2.2.1&#xff1a;SQL分类1)DDL(Data Definition Languages): 数据定义语言常用语句&#xff1a;create&#xff0c;drop&#xff0c;alter 等2)DML(Data Manipulation Language):数据操作语句常用语句&#xff1a;insert&#xff0c;delete&…

python代码变成运行程序_python脚本转化单个exe执行程序

操作系统平台&#xff1a; Windows Server 2003 R2 Enterprise SP2 X86简体中文版 1.ActivePython-2.7.5.6-win32-x86.msi 2.setuptools-1.4.1 python setup.py install 3.distribute-0.6.49&#xff08;兼容性考虑&#xff0c;建议不要使用0.7.3&#xff09; python setup.py …

线程操作函数

线程的挂起和恢复 DWORD SuspendThread ( HANDLE hThread ); //挂起线程 DWORD ResumeThread ( HANDLE hThread ); //恢复线程 SuspendThread 和 ResumeThread 都返回之前的挂起计数。 一个线程最多可以挂起MAXIMUM_SUSPEND_COUNT (WinNT.h中定义为127次)。 进程的挂起和恢…

先进激光三维成像雷达技术的研究进展与趋势分析

本文内容转载自《激光杂志》2019年第5期&#xff0c;版权归《激光杂志》编辑部所有。杨兴雨&#xff0c;李晨&#xff0c;郝丽婷&#xff0c;王元庆&#xff0c;古丽孜热∙艾尼外南京大学&#xff0c;伊犁师范学院摘要&#xff1a;激光雷达具有体积小、质量轻、探测距离远、高分…