当前位置: 首页 > news >正文

蓝桥杯宝藏排序算法(冒泡、选择、插入)

冒泡排序:

def 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=Trueif not exchange:return

选择排序:

从左往右找到最小的元素,放在起始位置;重复上述步骤,依次找到第2小、第3小元素...

第0次循环从[0,n-1]中找最小元素a[x],与a[0]交换

第1次循环从[1,n-1]中找最小元素,与a[1]交换

第2次循环从[2,n-1]中找最小元素,与a[2]交换

第i次循环从[i,n-1]中找最小元素,与a[i]交换

第n-2次循环从[n-2,n-1]中找最小元素,与a[n-2]交换时间复杂度:O(n'2),空间复杂度O(1),稳定

n = int(input())
a = list(map(int, input().split()))
for i in range(n - 1):  # 一共n-1次!min = i  # 每次默认第一个值为最小值for j in range(i + 1, n):if a[j] < a[min]:min = ja[i], a[min] = a[min], a[i]print(' '.join(map(str, a)))

插入排序:

第一个元素看做已排序,从左往右遍历每一个元素:

在已排序元素中从后往前扫描 : 如果当前元素大于新元素,则该元素移动到后一位

重复第二步直至找到小于等于新元素则停止。

将上述步骤看做摸牌,每次摸一张牌从后往前判断是否可以插入

对于第i张牌a[i],[0, i-1]中的牌都是已经排好顺序的

从后往前逐个判断ai]是否大于a[i]

如果a[i]>a[i]:则a[i]往后挪一个位置;如果a[i]<=a[i]:此时在aj+1]的位置放置a[i]

时间复杂度:O(n^2),空间复杂度O(1),不稳定

for i in range(1,len(li)):  # 功n-1趟,i表示摸到牌的下标tmp=li[i]  # 每次摸的牌j=i-1      # 手里最右侧的while j>=0 and li[j]>tmp:    # 一直往左走li[j+1]=li[j]    # 右移j-=1li[j+1]=tmp   # 选好位置了

相关文章:

  • 幺模矩阵-线性规划的整数解特性
  • 使用vue-qr,报错in ./node_modules/vue-qr/dist/vue-qr.js
  • Openwrt AP 发射 WiFi 信号
  • 【Android 13】使用Android Studio调试系统应用之Settings移植(一):编译服务器的配置、AOSP源码的下载、编译、运行
  • SpringMVC之文件的下载
  • 【数据结构入门精讲 | 第十篇】考研408排序算法专项练习(二)
  • 体验一下 CodeGPT 插件
  • 如何入门 GPT 并快速跟上当前的大语言模型 LLM 进展?
  • VMware虚拟机安装Ubuntu系统教程
  • 单片机的RTC获取网络时间
  • yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。‘yarn‘ 不是内部或外部命令,也不是可运行的程序.解决方案
  • 微信小程序生成一个天气查询的小程序
  • GO语言基础笔记(一):基本语法与数据类型
  • 期末加油站-图像处理期末知识点汇总
  • 毅速:3D打印随形水路已经逐步向压铸模具普及
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Redis中的lru算法实现
  • Sublime text 3 3103 注册码
  • Vim Clutch | 面向脚踏板编程……
  • windows下mongoDB的环境配置
  • 计算机常识 - 收藏集 - 掘金
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 思维导图—你不知道的JavaScript中卷
  • 写给高年级小学生看的《Bash 指南》
  • 学习ES6 变量的解构赋值
  • No resource identifier found for attribute,RxJava之zip操作符
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #Linux(Source Insight安装及工程建立)
  • (js)循环条件满足时终止循环
  • (二)WCF的Binding模型
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (分布式缓存)Redis分片集群
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .gitignore文件设置了忽略但不生效
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net IE10 _doPostBack 未定义
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • @Import注解详解
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [2016.7 test.5] T1
  • [Android学习笔记]ScrollView的使用
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [C#] 如何调用Python脚本程序
  • [Codeforces] combinatorics (R1600) Part.2
  • [C语言]——内存函数
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [Flex][问题笔记]TextArea滚动条问题