当前位置: 首页 > 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   # 选好位置了

 

 

相关文章:

  • 制作自己的 Docker 容器
  • 家校互通小程序实战开发02首页搭建
  • ARM GIC(四) gicv3架构基础
  • ModuleNotFoundError: No module named ‘tensorflow‘
  • 【华为OD题库-107】编码能力提升计划-java
  • 出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法
  • 芯科科技以卓越的企业发展和杰出的产品创新获得多项殊荣
  • Apache Flink 进阶教程(七):网络流控及反压剖析
  • SpringSecurity6 | 登录失败后的JSON处理
  • vue3项目 - 使用 pnpm 包管理器来创建项目
  • Power BI 学习
  • 直接插入排序【从0-1学数据结构】
  • Django 简单图书管理系统
  • 漏洞复现-泛微OA xmlrpcServlet接口任意文件读取漏洞(附漏洞检测脚本)
  • [足式机器人]Part2 Dr. CAN学习笔记-Ch00 - 数学知识基础
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • Android交互
  • C++入门教程(10):for 语句
  • co.js - 让异步代码同步化
  • JavaScript 一些 DOM 的知识点
  • Linux CTF 逆向入门
  • php中curl和soap方式请求服务超时问题
  • React-redux的原理以及使用
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue学习系列(二)vue-cli
  • 高程读书笔记 第六章 面向对象程序设计
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 聊聊hikari连接池的leakDetectionThreshold
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 用mpvue开发微信小程序
  • !$boo在php中什么意思,php前戏
  • #1014 : Trie树
  • #pragma 指令
  • #pragma预处理命令
  • #window11设置系统变量#
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • ... 是什么 ?... 有什么用处?
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Micro Framework初体验(二)
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .net中我喜欢的两种验证码
  • // an array of int
  • @Bean有哪些属性
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @软考考生,这份软考高分攻略你须知道
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • [Android Pro] Notification的使用