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;每篇阅读…

gc java root_聊聊Java的GC机制

原标题&#xff1a;聊聊Java的GC机制近日&#xff0c;MIUI在小米全球社区发布公告&#xff0c;表示MIUI将在全球市场销售的手机中预装谷歌拨号及谷歌消息应用程序(中国、印度、印度尼西亚等市场除外)。小米表示&#xff0c;小米9T Pro之后的设备在全球范围内都将会预装上述两款…

c语言课程设计 第2版,c语言课程设计报告模版(电子版)2.pdf

c语言课程设计报告模版(电子版)2大连交通大学 软件学院 C语言课程设计报告SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNINGC语言课程设计报告Course Design reporter课程名称 &#xff1a; C语言课程设计英文名称 : Course Design of C Programming专 业…

jmeter跨线程组传多个值_Jmeter 跨线程组传递参数 之两种方法(转)

终于搞定了Jmeter跨线程组之间传递参数&#xff0c;这样就不用每次发送请求B之前&#xff0c;都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的)&#xff0c;只需要发送一次登录请求&#xff0c;请求B直接用登录请求的参数即可&#xff0c;直到登录接口的参数…

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

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

c语言调用go函数,C中调用go中的回调函数

在用go包装某些c库时(如glut)&#xff0c;需要将go函数当作回调函数传递给c库(如glutDisplayFunc(&draw)中的draw函数&#xff0c;我想将go写的函数传过去)&#xff0c;应该怎么做&#xff1f;我写了一个示例&#xff0c;但一直不成功&#xff0c;不知道为什么&#xff1f;…

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

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

easyui一行显示多行_easyui datagrid以及oracle中的多行合并一行

页面显示:前端代码:toolbar"#toolbar" rownumbers"true" singleSelect"true" fitColumns"true">大箱码关联的箱码(不同箱码用分号分开&#xff0c;相同箱码用逗号分开)关联数量data-options"total: 0,pageSize:15,pageList: […

leetcode跳跃游戏C语言,LeetCode:跳跃游戏

给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步&#xff0c;从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到…

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

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

度秘语音引擎app_语音机器人哪家强 度秘/小冰/Siri/小娜横向评测

关于智能语音机器人&#xff0c;想必大家都不陌生&#xff0c;它们在某种程度上给我们带来了极大的便利。近日&#xff0c;百度推出了基于百度人工智能的手机助理产品——度秘。笔者也进行了体验&#xff0c;感觉不错&#xff0c;就顺带连着微软小冰、小娜和苹果Siri一起来个横…

c语言数字储存于变量,用C语言写中文数字字符串转数值变量

用C语言写中文数字字符串转数值变量C语言写中文数字字符转数值变量最近突发奇想&#xff1a;程序中要是输入一串中文数字&#xff0c;如“十万”就能自动识别转换成数值100000储存到变量里该多好。也许你会说&#xff0c;那很简单啊&#xff0c;先将中文字符分开&#xff0c;再…

微服务微应用的安全测试_提高微服务安全性的11个方法

1.通过设计确保安全设计安全&#xff0c;意味着从一开始就应该将安全性纳入软件设计中。关于安全&#xff0c;其中最常见的一个威胁就是恶意字符。我问我的朋友罗伯温奇(Rob Winch)他对删除恶意字符的想法。Rob是Spring Security项目的负责人&#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关键字同步代码块。线程在进入同步代码块之前会自动获得锁&…

cocos2dx标准容器_cocos2dx[3.2](24)——内存管理机制

【唠叨】整合参考文档。【参考】【内存管理机制】在3.x版本&#xff0c;Cocos2d-x采用全新的根类 Ref&#xff0c;实现Cocos2d-x 类对象的引用计数记录。引擎中的所有类都派生自Ref。1、引用计数Cocos2d-x 提供引用计数管理内存。> 调用 retain() 方法 &#xf…

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

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

python里的shell是什么_python中的shell操作

http://blog.csdn.net/meng_tianshi/article/details/6682317 首先介绍一个函数&#xff1a; os.system(command) 这个函数可以调用shell运行命令行command并且返回它的返回值。试一下在python的解释器里输入os.system(”ls-l”)&#xff0c;就可以看到”ls”列出了当前目录下的…

基于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;王伶俐(河海…