lowB三人组算法-冒泡排序-选择排序-插入排序
冒泡排序
时间复杂度: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三人组算法-冒泡排序-选择排序-插入排序相关推荐
- c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
- 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序
养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...
- 【排序算法】冒泡排序|选择排序|插入排序|希尔排序
文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序 第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...
- 冒泡排序选择排序插入排序
目录 冒泡排序 选择排序 插入排序 冒泡排序 冒泡排序(最好是O(n), 最坏O(n2)) 原理: 拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结 ...
- 02_Python算法+数据结构笔记-冒泡排序-选择排序-插入排序-快排-二叉树
b站视频:路飞IT学城 清华计算机博士带你学习Python算法+数据结构_哔哩哔哩_bilibili 文章目录 #11 排序介绍 #12 冒泡排序介绍 #13 冒泡排序 #14 选择排序 #15 插入 ...
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- 【排序算法】冒泡排序 选择排序 插入排序 希尔排序(数组)
冒泡排序 #include<iostream> using namespace std; #define SWAP(a,b) {int tmp;tmp=a;a=b;b=tmp;} int ...
- java 冒泡排序 选择排序 插入排序及其异同点
交换两坐标位置的swap()函数 之后要用到 public static void swap(int[] arr, int a, int b) {int temp;temp = arr[a];arr[ ...
- java冒泡排序函数验证_java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数...
import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...
- 过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
最新文章
- 2011年中国程序员薪水调查报告
- SqlServer数据库基础知识整理(不断更新~)
- 【BZOJ】1823: [JSOI2010]满汉全席(2-sat)
- mysql 导入txt数据到数据表【原创】
- 您为了什么而学?【一入红尘深似海 勿负天下有心人】
- 照片处理软件(iSee图片专家) 3.930 中文免费版
- android中activity布局,Activity布局初步(一)
- 罗振宇2021跨年演讲2:除了规模中国还有什么优势?
- 探究position定位中absolute和relative的异同
- 今天开通android博客 该认真学习了
- Android TTS 自动发声
- WPF AirSpace 空域问题解决方案
- 更改vscode Java项目的.class文件输出路径
- ListT的各种排序方法
- tf.cancat() 详解 —》理解为主
- 获取物种分类信息的方法(TaxonKit/ete3/Biopython)
- 20221128-20221202周总结
- “计算机科学“与“软件工程“有什么区别?哪个专业更适合你?
- 图形图像的基础知识总结
- STM32L+BC20+MQTT连接阿里云传输温湿度数据并控制继电器
热门文章
- 微信公众号开发三 测试号申请
- html5 canvas画彩虹,HTML5/Canvas连接的彩虹点平滑动画
- java实现百度网盘爬虫
- AirSim学习日志 9-三维空间航路点跟踪
- 【LeetCode】 374. 猜数字大小 骚气的猴子算法 打死都找不着系列 JAVA
- “九个字、一只手、专有云”,有孚网络的云上之路
- 计算机动画制作 课件,第四章 计算机动画的制作与编辑-课件(PPT).ppt
- nim game代码java_LeetCode Nim Game
- mysql触发器安全吗_猎八哥浅谈MYSQL触发器
- swift实现python中的spicy.signal.find_peaks