排序算法之low B三人组

排序low B三人组

列表排序:将无序列表变成有充列表

应用场景:各种榜单,各种表格,给二分法排序使用,给其他算法使用

输入无序列表,输出有序列表(升序或降序)

排序low B三人组

1. 冒泡排序

首先,列表每两个相邻的数做比较,如果前边的数比后边的数大,那么交换这两个数

def bubble_sort(l1):for i in range(len(l1)-1):for j in range(len(l1)-i-1):if l1[j] > l1[j+1]:l1[j],l1[j+1]=l1[j+1],l1[j]return l1

冒泡排序的优化

如果冒泡排序中执行一趟而没有交换,则列表已经是有序状态,可以直接结束排序

def bubble_sort_1(l1):for i in range(len(l1)-1):flag=Falsefor j in range(len(l1)-i-1):if l1[j] > l1[j+1]:l1[j],l1[j+1]=l1[j+1],l1[j]flag=Trueif not flag:return l1

2. 选择排序

一趟遍历记录中最小的数,放到第一个位置
再一趟遍历记录剩余列表中最小的数,继续放置

    def select_sort(l1):for i in range(len(l1)-1):mid=ifor j in range(i+1,len(l1)):if l1[j] <l1[mid]:mid=jl1[mid],l1[i]=l1[i],l1[mid]return l1

3. 插入排序

列表被分有有序区和无序区两个部分.最初有序区只有一个元素

每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空

例如,最初时有一个无序列表l1=[5,7,4,6,3,1,2,9,8],其使用插入排序时的步骤为:

1.取无序列表l1中的第一个元素5,放入另一个有序列表tmp中
2.取无序列表l1中的第二个元素7,因为7比5大,把7放入有序列表tmp的第二个位置
3.取无序列表l1中的第三个元素4,因为4比5小,所以把4放入到有序列表tmp的元素5的左边中,此时有序列表tmp为[4,5,7]
4.取l1中第四个元素6,因为6比5大,又比7小,把6放入到元素5和7之间,此时tmp变成了[4,5,6,7]
...
每次从无序区中选择一个元素,插入到有序区的某个位置,直到无序区变空

def insert_sort(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-1li[j+1] = tmpreturn li  

转载于:https://www.cnblogs.com/zgd1234/p/8583024.html

排序算法之low B三人组相关推荐

  1. 排序算法(01)— 三种简单排序(冒泡、插入、选择)

    一.概述 排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现.但是了解这些精妙的思想对我们还是大有裨益的. 1.1 排 ...

  2. low逼三人组、nb二人组、归并、希尔排序----小结

    转载于:https://www.cnblogs.com/zhuifeng-mayi/p/9218083.html

  3. 【排序算法】冒泡排序的三种方法

    冒泡排序算法: 最优时间复杂度为o(n),即当且只当元素本身就是按照从小到大的顺序排列的(这里默认冒泡排序从小到大排列). 最差时间复杂度为o(n^2),当其中有任何一组数据不是按照从小到大排列. # ...

  4. 【好记性不如烂笔头】排序算法之归并排序(三)小和问题

    归并排序(三)小和问题 前言 小和 思考 暴力 引申 思路 代码 注意 前言   上篇博客学习了归并排序,一种是遍历的方式实现,一种是迭代的方式实现,那么归并排序的思路只能用于排序嘛?也不是,这篇博客 ...

  5. 算法1-排序LowB三人组

    import random from timewrap import *@cal_time def bubble_sort(li):for i in range(len(li) - 1):# i 表示 ...

  6. Python排序算法总结

    Python排序算法总结 递归 在正式讲算法之前,先介绍一下递归.递归是一种解决问题的思路. 特点 调用自身 必须有一个明确的结束条件,比如if... 递归的两个阶段: 递推(压栈):到某个阶段,该阶 ...

  7. 动画 | 大学四年结束之前必须透彻的排序算法

    现如今大学生学习排序算法,除了学习它的算法原理.代码实现之外,作为一个大学生更重要的往往是要学会如何评价.分析一个排序算法.排序对于任何一个程序员来说,可能都不会陌生.大部分编程语言中,也都提供了排序 ...

  8. 排序算法的时间复杂度_算法的时间复杂度

    一. 算法的时间复杂度 1.如何评估算法的性能 数据结构和算法,本质上是解决现实存在的问题,即如何让解决指定问题的代码运行得更快?一个算法如果能在所要求的资源限制(resource constrain ...

  9. 六种排序算法的JavaScript实现以及总结

    最近几天在系统的复习排序算法,之前都没有系统性的学习过,也没有留下过什么笔记,所以很快就忘了,这次好好地学习一下. 首先说明为了减少限制,以下代码通通运行于Node V8引擎而非浏览器,源码在我的Gi ...

最新文章

  1. python使用matplotlib可视化、为可视化图像添加图例(legend)、自定义图例的字体格式、字体大小、字体颜色等
  2. 通过×××路由器实现跨网段访问
  3. 逆向工程核心原理读书笔记-代码注入
  4. ecshop flow.php?step=checkout,【原创文章】推荐两种调试ecshop php程序日志记录的方法...
  5. method=post 怎么让查看源代码看不到_网上文档无法复制怎么办?试试这几个方法!...
  6. 如何搭建一套完整的深度学习系统?
  7. 夜神模拟器--安卓模拟神器
  8. 火热的区块链技术,也能解决文化领域的这些痛点
  9. 如何使用Apollo / Graphene管理GraphQL突变中的文件上传
  10. 液晶屏LED背光板可以分为几类?
  11. Spring涉及到的9种设计模式
  12. 网页在线视频播放大全
  13. 在线json校验工具
  14. 127.0.0.1 zxt.php_php单文件版在线代码编辑器使用方法
  15. 2021年江苏省高考成绩排名查询,2021年江苏高考分数一分一段位次表,江苏高考个人成绩排名查询方法...
  16. AI首席架构师6-AICA-从数据到知识-百度知识图谱技术及应用
  17. VC程序中Windows XP风格程序界面的实现
  18. 我的流水账---城市浅薄记忆(三)
  19. 【matlab】记一次微信聊天文字记录导出到Excel工作
  20. P2P平台尝试大数据征信初见成效

热门文章

  1. cocos2d-lua 搓牌效果_4款热门面霜评测,欧莱雅效果一般,艾珂薇性价比高,菲洛嘉最贵...
  2. 以某个字符开始_小白从零开始数据分析01—Excel常用公式汇总(数据清洗)
  3. 联想e470无线网卡驱动_笔记本显示已关闭无线功能,请问怎样打开?谢谢!
  4. 集成学习python_从Boosting到Stacking,概览集成学习的方法与性能
  5. markdown 字体颜色_一文搞定Markdown编辑头条号方法
  6. 阶乘之和计算_利用MULTINOMIAL函数计算参数和的阶乘与各参数阶乘乘积的比 值
  7. jquery选择器:第一个子元素
  8. 循环结构作业c语言,c语言循环结构练习题带答案
  9. 火车头采集php源码不同,防火车头采集的功能
  10. webrtc回声消除线程android,android WebRTC 示例demo源码(回音消除)