冒泡排序

  时间复杂度:O(n2)  算法稳定

  • 第一趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到最后位置得出一个第一大数
  • 第二趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到倒数第二得出一个第二大数
  • 第n-1趟,最后的两个数比较得出最小数和倒数第二小数

  代码实现点:时时比较,时时交换

def bubble_sort(li):for i in range(len(li)-1):  #第i趟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 = Trueif not exchange:  #这里属于优化,也就是如果这次循环中没有发生一次交换,那么此时已经是有序的returnli = list(range(10000))
random.shuffle(li)bubble_sort(li)

选择排序

  时间复杂度:O(n2)  算法稳定?

  • 第一趟,从第一个数开始,相邻两个数比较,把小的索引位置赋值给min_index变量,循环数和当前小值比较,循环完后会得出一个最小值的索引,然后最小值位置和第一个值位置交换
  • 第一趟,从第二个数开始,相邻两个数比较,把小的索引位置赋值给min_index变量,循环数和当前小值比较,循环完后会得出一个第二小值的索引,然后最第二小值位置和第二个值位置交换
  • 第n-1趟,最后的两个数比较得出最大数和第二大数,交换

  代码实现点:时时存储小值索引,一趟后交换

def select_sort(li):for i in range(len(li)-1): # i是第几趟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)li = [3,4,2,1,5,6,8,7,9]
print(li)
select_sort(li)

插入排序

  时间复杂度:O(n2)  算法稳定?

  • 好比打扑克,手里牌已经有序,抓的牌只要插到顺序正确的位置上

  代码实现点:记录手里牌的下标和抓到牌的值,利用冒泡的方式去把抓到牌往左冒

def insert_sort(li):for i in range(1, len(li)): #i 表示摸到的牌的下标tmp = li[i]j = i - 1 #j指的是手里的牌的下标while j >= 0 and li[j] > tmp:  #小于当前手牌,往左冒li[j+1] = li[j]j -= 1li[j+1] = tmpprint(li)li = [3,2,4,1,5,7,9,6,8]
print(li)
insert_sort(li)

转载于:https://www.cnblogs.com/xinsiwei18/p/10128864.html

lowB三人组算法-冒泡排序-选择排序-插入排序相关推荐

  1. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  2. 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...

  3. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

    文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序   第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...

  4. 冒泡排序选择排序插入排序

    目录 冒泡排序 选择排序 插入排序 冒泡排序 冒泡排序(最好是O(n), 最坏O(n2)) 原理: 拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结 ...

  5. 02_Python算法+数据结构笔记-冒泡排序-选择排序-插入排序-快排-二叉树

    b站视频:路飞IT学城 清华计算机博士带你学习Python算法+数据结构_哔哩哔哩_bilibili 文章目录 #11 排序介绍 #12 冒泡排序介绍 #13 冒泡排序 #14 选择排序 #15 插入 ...

  6. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  7. 【排序算法】冒泡排序 选择排序 插入排序 希尔排序(数组)

    冒泡排序 #include<iostream> using namespace std; #define SWAP(a,b) {int tmp;tmp=a;a=b;b=tmp;} int ...

  8. java 冒泡排序 选择排序 插入排序及其异同点

    交换两坐标位置的swap()函数 之后要用到 public static void swap(int[] arr, int a, int b) {int temp;temp = arr[a];arr[ ...

  9. java冒泡排序函数验证_java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数...

    import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...

  10. 过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

最新文章

  1. 2011年中国程序员薪水调查报告
  2. SqlServer数据库基础知识整理(不断更新~)
  3. 【BZOJ】1823: [JSOI2010]满汉全席(2-sat)
  4. mysql 导入txt数据到数据表【原创】
  5. 您为了什么而学?【一入红尘深似海 勿负天下有心人】
  6. 照片处理软件(iSee图片专家) 3.930 中文免费版
  7. android中activity布局,Activity布局初步(一)
  8. 罗振宇2021跨年演讲2:除了规模中国还有什么优势?
  9. 探究position定位中absolute和relative的异同
  10. 今天开通android博客 该认真学习了
  11. Android TTS 自动发声
  12. WPF AirSpace 空域问题解决方案
  13. 更改vscode Java项目的.class文件输出路径
  14. ListT的各种排序方法
  15. tf.cancat() 详解 —》理解为主
  16. 获取物种分类信息的方法(TaxonKit/ete3/Biopython)
  17. 20221128-20221202周总结
  18. “计算机科学“与“软件工程“有什么区别?哪个专业更适合你?
  19. 图形图像的基础知识总结
  20. STM32L+BC20+MQTT连接阿里云传输温湿度数据并控制继电器

热门文章

  1. 微信公众号开发三 测试号申请
  2. html5 canvas画彩虹,HTML5/Canvas连接的彩虹点平滑动画
  3. java实现百度网盘爬虫
  4. AirSim学习日志 9-三维空间航路点跟踪
  5. 【LeetCode】 374. 猜数字大小 骚气的猴子算法 打死都找不着系列 JAVA
  6. “九个字、一只手、专有云”,有孚网络的云上之路
  7. 计算机动画制作 课件,第四章 计算机动画的制作与编辑-课件(PPT).ppt
  8. nim game代码java_LeetCode Nim Game
  9. mysql触发器安全吗_猎八哥浅谈MYSQL触发器
  10. swift实现python中的spicy.signal.find_peaks