排序之low逼三人组及其python代码实现
排序
冒泡排序 时间复杂度:O(n平方)
思路(降序,升序反过来就行)
一共进行n-1趟,每趟得到一个最小的
第一趟从第一个元素开始,到第n个元素结束,每个元素与其之后的元素进行比较,若比之后的元素小,则交换位置。结束后,第n个元素为最小
第二趟从第一个元素开始,到第n-1个元素结束,每个元素与其之后的元素进行比较,若比之后的元素小,则交换位置。结束后,第n-1个元素为最小
以此类推
第n-1趟从第一个元素开始,到第2个元素结束,两个元素比较大小。最终形成降序序列
####代码实现
每一趟结束我们输出一次列表
def bubble_sort(li):for i in range(len(li)-1):for j in range(len(li)-i-1):if li[j] < li[j+1]: #<降序>升序li[j], li[j+1] = li[j+1], li[j]print(li)li = [2,5,7,3,7,5,4,3,2]
print("原列表:",li)
bubble_sort(li)
改进
若一趟以后,所有元素位置均没发生改变,则可以结束循环。在上面图片中就可以看到后面几轮均未发生变化
for i in range(len(li)-1):exchange = Falsefor j in range(len(li)-i-1):if li[j] < li[j+1]: #<降序>升序li[j], li[j+1] = li[j+1], li[j]exchange = Trueprint(li)if not exchange:return lili = [2,5,7,3,7,5,4,3,2]
print('原列表:',li)
print(bubble_sort2(li))
可见循环次数变少
插入排序 时间复杂度:O(n平方)
思路(升序,降序反过来就行)
一共进行n-1趟,每趟将无序区第一个放入有序区排序,从有序区最后一个元素开始比较,若比有序区最后一个元素小,则交换位置
代码实现
每一趟结束我们输出一次列表
def insert_sort(li):for i in range(1,len(li)):tmp = li[i]j = i - 1while j >= 0 and li[j] > tmp:li[j+1] = li[j]j = j - 1li[j+1] = tmpprint(li)return lili = [3,6,4,74,8,2,6,9,3]
print('原列表:',li)
print(insert_sort(li))
选择排序 时间复杂度:O(n平方)
思路(升序,降序反过来就行)
一共进行n-1趟,每趟首先找出无序区最小的元素,然后将其与无序区第一个元素交换
第一趟没有有序区,然后找出第所有元素中最小的元素,然后将其与无序区第一个元素(即第一个元素)交换
第二趟有序区为第一个元素,然后找出第2到n元素中最小的元素,然后将其与无序区第一个元素(即第二个元素)交换
以此类推
第n-1趟有序区为第1到n-2元素,然后找出第n-1到n元素中最小的元素,然后将其与无序区第一个元素(即第n-1个元素)交换
代码实现
def select_sort(li):for i in range(len(li)-1):min_loc = ifor j in range(i+1,len(li)):if li[j] < li[min_loc]:min_loc = jli[i],li[min_loc] = li[min_loc],li[i]print(li)return lili2 = [3,6,1,5,8,9,4]
print('原列表:',li2)
select_sort(li2)
排序之low逼三人组及其python代码实现相关推荐
- low逼三人组、nb二人组、归并、希尔排序----小结
转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9218083.html
- 排序算法之low B三人组
排序算法之low B三人组 排序low B三人组 列表排序:将无序列表变成有充列表 应用场景:各种榜单,各种表格,给二分法排序使用,给其他算法使用 输入无序列表,输出有序列表(升序或降序) 排序low ...
- 三百行python代码的项目_300行Python代码打造实用接口测试框架
在刚开始实现ApiTestEngine的时候,卡斯(kasi)提议做一个Java版的.对于这样的建议,我当然是拒绝的,瞬即回复了他,"人生苦短,回头是岸啊". 当然,我没好意思跟他 ...
- 牛逼,两百行Python代码带你打造一款《天天酷跑》游戏!
公众号关注 "菜鸟学Python" 第431篇原创,设为 "星标",带你一起学编程! 最近一段时间,小编发现已经好久没有给大家带来趣味游戏的案例展示了.刚好小编 ...
- Mongdb篇三。 用Python代码实现Mongdb数据库的增删查改、集合管道示例,超详细,全部用实例print大法演示功能通俗易懂。学pymongo库看一篇就够
⭐ 简介:大家好,我是zy阿二,我是一名对知识充满渴望的自由职业者. ☘️ 最近我沉溺于Python的学习中.你所看到的是我的学习笔记. ❤️ 如果对你有帮助,请关注我,让我们共同进步.有不足之处请留 ...
- 插入排序、选择排序、快速排序以及归并排序(附Python代码)
排序算法基本原理以及复杂度等知识点可跳转至该博客了解https://www.cnblogs.com/onepixel/p/7674659.html ,本博客主要对排序算法性能进行对比以及记录对比过程发 ...
- 三百行python代码的项目_使用300行代码创建一个分布式系统
使用 300 行代码创建一个分布式系统 构建一个分布式系统是很困难的. 它需要可扩展性. 容错性. 高可用性. 一致性. 可伸缩以及高效.为了达到这些目的,分布式系统需要很多复杂的组件以一 种 复杂的 ...
- python实现局域网攻击_牛逼了!一行Python代码搭建一个局域网服务器
不知道大家有没有遇到过这样的情况, 在做项目或者研发的时候,迫切想要将一个文件传输给另一台电脑,却找不到U盘,于是麻烦的通过登陆qq.微信等社交软件 ,或者邮箱等工具进行传输,十分麻烦,让人苦恼. 都 ...
- Python代码统计工具
目录 Python代码统计工具 声明 一. 问题提出 二. 代码实现 三. 效果验证 Python代码统计工具 标签: Python 代码统计 声明 本文将对<Python实现C代码统计工具(一 ...
- 在树莓派里面运行python代码_树莓派如何运行python程序
树莓派如何运行python程序 发布时间:2020-09-23 12:03:39 来源:亿速云 阅读:128 作者:小新 这篇文章主要介绍了树莓派如何运行python程序,具有一定借鉴价值,需要的朋友 ...
最新文章
- vector,数组,动态数组效率测试
- 【每日一算法】两数相加
- 【转】局域网内访问VS2012 调试的IIS Express web服务器
- 在Centos7安装mysql
- 一个设计反模式——究竟什么是轮子理论
- 2016中国APP分类排行榜发布暨颁奖晚宴 —— 兰亭修禊少长有王谢 黔香阁暖高见望诸公...
- JavaFX UI控件教程(二十七)之File Chooser
- iphone最新款手机_iPhone 丢了99.9%能找回?这种做法不可信!!
- Spring入门(1)
- python 多线程笔记(2)-- 锁
- SQL中CONVERT转化函数的用法(转)
- JDK1.8官网下载安装以及配置环境变量教程(官网)
- $(origin variable;)
- vant van-calendar日历组件默认选中明天而且只能选择明天
- 使用STM32CubeMX 快速生成 USB HID 工程 - STM32F107VCT6
- linux迁移系统失败,Windows到Linux系统代码移植遇到的问题
- C#.NET 窗体停靠控件WeifenLuo.WinFormsUI.Docking.dll的使用
- 【CSDN】创作区上传图片-粘贴/文件上传失败解决!
- js px转rem,简单版,注意不能修改ui框架的px
- 如何在idea上运行eclips项目。
热门文章
- Kent Beck 教你编程模式与代码重构
- Redhat认证体系
- 使用webpack打包nodejs 后台端环境|NodeJs 打包后台代码
- 在Microsoft Server Management Studio中用T-SQL语句创建数据库和工作表
- CentOS6 双线双ip服务器路由设置方法
- Android批量打包-如何一秒内打几十个apk渠道包
- 如何维持手机电池寿命_教你一招,可以让你的手机电池容量长期维持在峰值,延长电池寿命...
- Python jiba 分词
- rust+mysql+prep+exec_Rust + Flutter 高性能的跨端尝试
- 孪生再世代表数字几_正文 第六百一十七章 原来是孪生姐妹?