python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c、java之类的运行速度快,应用Python实现主要是为了:1、证明我已经理解了这些算法,2、实现算法可以给自己带来莫名的成就感,这也算是自己的一点积累吧,多少年后,看了这些文章会有些许的自豪吧,好了,言归正传,进入今天的正题:简单排序算法之选择、冒泡、插入排序。

1、选择排序

选择排序是最直观的一种排序思想,但是其是一种不稳定的排序方法。

主要思想:每次从待排序的元素中选出最小或最大的一个元素,放在序列的起始位置,然后在从剩下的序列中继续寻找最小或最大的元素,直接序列剩下一个元素为止。

def select_sort(origin_items, desc=False):"""选择排序origin_items 为待排序序列desc表示是否为降序,默认为升序"""than = '<' if desc else '>'for i in range(len(origin_items) - 1):min_index = ifor j in range(i + 1, len(origin_items)):if eval(str(origin_items[i])+than+str(origin_items[j])):min_index = jorigin_items[i],origin_items[min_index] = origin_items[min_index],origin_items[i]return origin_items

2、冒泡排序

主要思想:从序列的第一个元素开始逐个与它后面的每个元素进行比较,如果满足条件(大于或小于)则交换两个元素,否则继续向后比较,直接结束。

def bubble_sort(origin_items, desc=False):'''冒泡排序'''than = '<' if desc else '>'for i in range(len(origin_items)-1):for j in range(i+1,len(origin_items)):if eval(str(origin_items[i])+than+str(origin_items[j])):#交换两个元素的位置 origin_items[i],origin_items[j] = origin_items[j],origin_items[i]return origin_items

3、插入排序

主要思想:将数据分为有序和无序两部分,通常将第一个元素设置为有序部分,剩下的元素设置为无序部分,每次从无序部分的第一个元素开始与有序部分的元素从后向前逐个比较,找到插入位置将元素插入到有序部分中,直到数据都是有序部分为止。

def insert_sort(origin_items, desc=False):'''插入排序'''than = '>' if desc else '<'for i in range(1,len(origin_items)):for j in range(i,0,-1):if eval(str(origin_items[j]) + than + str(origin_items[j-1])):origin_items[j],origin_items[j-1] = origin_items[j-1],origin_items[j]return origin_items

验证:

a = [10,2,44,2,4,5,7,3,445,24]
print('选择排序升序结果为:',select_sort(a))
print('选择排序降序结果为:',select_sort(a,True))print('冒泡排序升序结果为:',bubble_sort(a))
print('冒泡排序降序结果为:',bubble_sort(a,True))print('插入排序升序结果为:',insert_sort(a))
print('插入排序降序结果为:',insert_sort(a,True))

结果为:

532d17da5ab8e9fa2c35335259f0e0c6.png

如果感兴趣的欢迎关注公众账号:洞察数据挖掘价值。

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

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

相关文章

numpy安装_Python进阶之NumPy快速入门(一)

前言NumPy是Python的一个扩展库&#xff0c;负责数组和矩阵运行。相较于传统Python&#xff0c;NumPy运行效率高&#xff0c;速度快&#xff0c;是利用Python处理数据必不可少的工具。这个NumPy快速入门系列分为四篇&#xff0c;包含了NumPy大部分基础知识&#xff0c;每篇阅读…

wallpaper代码_70 行 python 代码实现壁纸批量下载!

好久没有写文章了&#xff0c;因为最近都在适应新的岗位&#xff0c;以及利用闲暇时间学习python。这篇文章是最近的一个python学习阶段性总结&#xff0c;开发了一个爬虫批量下载某壁纸网站的高清壁纸。注意&#xff1a;本文所属项目仅用于python学习&#xff0c;严禁作为其他…

100g流量在电脑上可以用多久_三大运营商5G体验方案出炉!100G一个月够不够?...

前段时间&#xff0c;工信部向中国移动、中国联通、中国电信、中国广电发放5G商用牌照&#xff0c;这也意味着&#xff0c;我国5G网络正式开始被商用。并且目前三大运营商都已完成了5G网络下的终端组网测试&#xff0c;计划于今年第三季度开始进行试商用。而就在近期&#xff0…

java 获取注释_Java面试题Java语言有哪些注释的方式?

点击上方“千锋Java学院”&#xff0c;选择“置顶公众号”每天一道面试模拟真题及解析课前导读●回复"每日一练"获取以前的题目&#xff0c;持续更新&#xff01;●我希望大家积极参与&#xff01;有什么不懂可以加小千微信进行讨论★把面试准备工作&#xff0c;拆分…

密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!

全文共11345字&#xff0c;预计学习时长23分钟或更长对于数据科学家来说&#xff0c;可视化工具比比皆是&#xff0c;因此&#xff0c;退一步去钻研每种可视化的类型及其适用的最佳案例就变得十分重要。为了发挥工具的最佳效用&#xff0c;有时可以考虑将其拟人化&#xff0c;甚…

android 屏幕分辨率 屏幕密度,Android屏幕适配——多分辨率多屏幕密度

为什么要适配&#xff0c;适配的好处等等这里就不说了&#xff0c;直接说我们要怎么适配&#xff0c;请看下面的内容。1.重要概念px&#xff1a;pixel&#xff0c;像素Android原生API&#xff0c;UI设计计量单位&#xff0c;如获取屏幕宽高。屏幕分辨率&#xff1a;指在纵向和横…

操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...

简介上篇【从入门到放弃-Java】并发编程-线程安全中&#xff0c;我们了解到&#xff0c;可以通过加锁机制来保护共享对象&#xff0c;来实现线程安全。synchronized是java提供的一种内置的锁机制。通过synchronized关键字同步代码块。线程在进入同步代码块之前会自动获得锁&…

android长按加入购物车,《Android APP可能有的东西》之UI篇:加入购物车动画

很多电商app的加入购物车的动作会要求加上动画效果&#xff1a;飞进购物车&#xff0c;想来也合理&#xff0c;在listview界面时商品快速加入购物车&#xff0c;一直toast用户加入成功好像不太正常&#xff0c;所以添加一个动画&#xff0c;用户自然就懂了&#xff0c;而且也挺…

基于android 定位系统,基于Android平台定位系统设计和实现

2 0 1 3牟第 1 2期文章编号&#xff1a; 1 0 0 9— 2 5 5 2 ( 2 0 1 3 ) 1 2— 0 1 8 7— 0 4 中图分类号&#xff1a; T P 3 1 6 . 8 9 文献标识码&#xff1a; A基于 A n d r o i d平台定位系统设计和实现李瑞宣&#xff0c;王山东&#xff0c;徐志远&#xff0c;王伶俐(河海…

开发工评价程师自我_常见“自我评价”写作范例

“自我评价”在找工作的时候是一个非常重要的内容&#xff0c;优秀的“自我评价”不仅就可以让别人对你有一个全面的认识&#xff0c;更可以通过寥寥数语就让别人对你产生浓厚的兴趣&#xff0c;让你的求职之路事半功倍。但是怎么写“自我评价”&#xff0c;却是让很多人犯愁的…

visual studio 调试python_Visual Studio Code Python 调试设置

很意外Visual Studio Code居然支持Python代码的断点调试。一起来配置一下。工具/原料 Visual Studio Code 1.1 Python 2.7.11 方法/步骤 1 首先&#xff0c;当然是要先安装插件&#xff0c;配置Python环境。这个大家看这个文章 2 环境配置完成后&#xff0c;我们点击调试按钮&a…

leetcode c程序总提示主函数_Matlab系列之函数嵌套

昨天的那一篇讲的几个函数&#xff0c;不知道你们理解的如何&#xff0c;是否懂得怎么去使用了&#xff0c;如果还没懂&#xff0c;一定要再多看几遍&#xff0c;并且去在软件上进行实操&#xff0c;今天的话&#xff0c;将要介绍一下函数的嵌套&#xff0c;不过在正式讲嵌套之…

华为手机出现android啥意思,传华为正研发手机系统,如果脱离安卓系统,还有啥能阻止华为前进...

原标题&#xff1a;传华为正研发手机系统&#xff0c;如果脱离安卓系统&#xff0c;还有啥能阻止华为前进自从国产手机正式进入了智能手机时代之后&#xff0c;中华酷联的中兴、酷派、联想早已经被华为甩在了身后。虽然现在国产手机已经呈现出华为、小米、OPPO、vivo四足鼎立的…

sql 数据库前两列值乘_Sql语句常用关键字

最近接触sql比较多&#xff0c;发现自己已经遗忘的也差不多&#xff0c;要用到的时候迟迟拿不出来&#xff0c;今天开始会在知乎上纪录一些sql语句学习的内容&#xff0c;内容重在说明查询语句的用法。一、sql查询语句的初始介绍1、查询语句的一般写法&#xff1a;select .....…

谷歌fuchsiaos和华为鸿蒙,华为鸿蒙最大的对手现身!谷歌正式推送Fuchsia OS,或替代安卓...

原标题&#xff1a;华为鸿蒙最大的对手现身&#xff01;谷歌正式推送Fuchsia OS&#xff0c;或替代安卓可能是看到了华为鸿蒙的进展神速&#xff0c;谷歌在近日也正是开始了Fuchsia OS的推送。5月25日&#xff0c;谷歌Fuchsia OS项目负责人在社交媒体上公开喊话&#xff1a;“今…

c html转为datatable,C#中DataTable导出为HTML格式的方法

前言在C#中DataTable导出数据的时候&#xff0c;我们需要HTML格式的输出数据, 这时候就需要使用将DataTable导出为到HTML格式的方法了&#xff0c;以下代码就可以帮助我们达到目的。首先,我们要绑定DataTable和 DataGridView。一、通过DataTable绑定DataGridView1. 创建DataTab…

mybatis insert 忽略 联合唯一索引_MySQL实战中,Insert语句的使用心得总结

提到MySQL的Insert语句&#xff0c;你肯定不陌生&#xff0c;或许已经张口就来&#xff1a;不就是insert into table values(xxx,xxx,xxx)嘛&#xff01;没错&#xff0c;但在实战中&#xff0c;根据不同的需求场景&#xff0c;插入操作在语法、执行方式上的用法多种多样。今天…

eureka集群只注册一个_Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇本文主要内容&#xff1a;1&#xff1a;spring cloud整合Eureka总结本文是由凯哥(凯哥Java:kagejava)发布的《spring cloud系列》教程的总第十篇&#xff1a;本文是几个维度中的第一个维度&#xff1a;注册与发现维度…

html鼠标滚轴后下一页,鼠标滚动有一页ppt不能马上下翻,而是上下移动,移动到一定位置后才翻到下一页,这是怎么回事?怎么解决?...

一般是这张幻灯片里有图片才会出现这种问题&#xff0c;你的图片格式有问题&#xff0c;点击图片&#xff0c;再点击格式&#xff0c;把图片格式换一下就好了同问&#xff0c;但不是下面两个原因&#xff0c;都试过没用1&#xff0c;ppt的比例太大&#xff0c;缩小比例即可。Ct…

resnet keras 结构_Day146:第二讲 ResNet

出处论文&#xff1a;Deep Residual Learning for Image Recognition作者&#xff1a;Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian SunImageNet Top5错误率&#xff1a; 3.57%主要思想主要体现在 Residual(残差)&#xff0c;从名字就可以看出&#xff0c;不学绝对值&#x…