蓝桥杯-Python组(一)

1. 冒泡排序

算法步骤:

  • 比较相邻元素,如果第一个大于第二个则交换
  • 从左往右遍历一遍,重复第一步,可以保证最大的元素在最后面
  • 重复上述操作,可以得到第二大、第三大、…
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
n = int(input())
a = list(map(int, input().split()))# 循环n-1次,每次获得第i大
for i in range(1, n):for j in range(0, n - i):if a[j] > a[j + 1]:a[j], a[j + 1] = a[j + 1], a[j]
print(' '.join(map(str, a)))

在这里插入图片描述

2. 选择排序

算法步骤:

  • 从左往右找到最小元素,放在起始位置
  • 重复上述步骤,依次找到第2小、第3小元素…
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

n = int(input())
a = list(map(int, input().split()))  # 将一个函数映射到一个或多个迭代器中的所有元素上for i in range(n - 1):min_value = a[i]  # 值min_idx = i  # 下标for j in range(i, n):# 第i次从[i, n-1]找最小值if a[j] < min_value:min_value = a[j]min_idx = j# 将最小值放到前面去(将最小值和最前面的元素交换)a[min_idx], a[i] = a[i], a[min_idx]print(' '.join(map(str, a)))

3. 插入排序

算法步骤:

  • 第一个元素看做已排序,从左往右遍历每一个元素;
  • 在已排序元素中从后往前扫描:如果当前元素大于新元素,则该元素移动到后一位
  • 重复第二步直至找到小于等于新元素则停止
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
n = int(input())
a = list(map(int, input().split()))# 对于第i个数字,在区间[0,i-1]中从后往前找对应插入的位置
for i in range(1, n):value = a[i]# 插入元素的下标insert_idx = 0for j in range(i - 1, -1, -1):if a[j] > value:# 往后挪a[j + 1] = a[j]else:insert_idx = j + 1break# 插入第i个数字a[insert_idx] = value
print(' '.join(map(str, a)))

4. 快速排序

算法步骤:

  • 找一个基准值X
  • 把列分成三部分:小于等于X的数字,X, 大于X的数字
  • 左半部分和右半部分递归使用该策略

例如:a=[3,5,8,1,2,9,4,7,6]
找到基准值3,[1,2] , 3, [5,8,9,4,7,6]
左半部分[1,2]作为一个子问题求解
右半部分 [5,8,9,4,7,6]作为一个子问题求解
在这里插入图片描述
在这里插入图片描述

# a[left,right]按照小于等于基准值、基准值、大于基准值排列
def partition(a, left, right):# 设置基准值下标:left# 放置小于等于基准之元素的下标idx = left + 1for i in range(left + 1, right + 1):# 如果当前元素小于等于基准值,则放到最小元素那边if a[i] <= a[left]:a[idx], a[i] = a[i], a[idx]idx += 1# 小于等于基准值的元素为[left+1, idx-1]# 最后将基准值放在中间a[left], a[idx - 1] = a[idx - 1], a[left]# 返回基准值的下标return idx - 1def quicksort(a, left, right):if left < right:mid = partition(a, left, right)quicksort(a, left, mid - 1)quicksort(a, mid + 1, right)n = int(input())
a = list(map(int, input().split()))
quicksort(a, 0, n-1)
print(' '.join(map(str, a)))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/535228.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java错误:微服务报错Cannot execute request on any known serve

&#x1f414;问题内容 报Cannot execute request on any known server 这个错&#xff1a;连接Eureka服务端地址不对。 &#x1f414;解决方式 检查.yml文件或者.properties文件配置 下划线下划线后面的小写字母等同于去掉下划线大写下划线后面的字母&#xff08;驼峰原则&am…

基于java+springboot+mybatis+laiyu实现学科竞赛管理系统

基于javaspringbootmybatislaiyu实现学科竞赛管理系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获…

鸿蒙开发实战:【性能调优组件】

简介 性能调优组件包含系统和应用调优框架&#xff0c;旨在为开发者提供一套性能调优平台&#xff0c;可以用来分析内存、性能等问题。 该组件整体分为PC端和设备端两部分&#xff0c;PC端最终作为deveco studio的插件进行发布&#xff0c;内部主要包括分为UI绘制、设备管理、…

python自学7

第二章第一节面向对象 程序的格式都不一样&#xff0c;每个人填写的方式也有自己的习惯&#xff0c;比如收集个人信息&#xff0c;可能有人用字典字符串或者列表&#xff0c; 类的成员方法 类和对象 构造方法 挨个传输值太麻烦了&#xff0c;也没有方便点的&#xff0c;有&…

活动预告:如何培养高质量应用型医学人才?

在大数据时代与“新医科”建设的背景下&#xff0c;掌握先进的医学数据处理技术成为了医学研究与应用的重要技能。 为了更好地培养社会所需要的高质量应用型医学人才&#xff0c;许多高校已经在广泛地开展面向医学生的医学数据分析教学工作。 在“课-训-赛”育人才系列活动的…

vue3 + antd二次封装a-table组件

前置条件 vue版本 v3.3.11 ant-design-vue版本 v4.1.1 内容梗概 二次封装a-table组件&#xff0c;大大提高工作效率和降低项目维护成本&#xff1b; 先看效果图 代码区域 utils.js文件 // 用于模拟接口请求 export const getRemoteTableData (data [], time 1000) >…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的输电线路设备检测系统(深度学习+UI界面+Python代码+训练数据集)

摘要&#xff1a;本篇博客详细介绍了如何运用深度学习构建一个先进的输电线路设备检测系统&#xff0c;并附上了完整的实现代码。该系统利用了最新的YOLOv8算法作为其核心&#xff0c;同时也对之前版本的YOLOv7、YOLOv6、YOLOv5进行了性能比较&#xff0c;包括但不限于mAP&…

代码随想录算法训练营第六天| 242.有效字母的异位词、349.两个数组的交集、202快乐数、1.两数之和

系列文章目录 目录 系列文章目录242.有效的字母异位词349. 两个数组的交集①使用HashSet②使用Hash数组 202. 快乐数1. 两数之和①暴力解法&#xff08;时间复杂度不符合要求&#xff09;②使用HashMap法 242.有效的字母异位词 这道题是数组在哈希表中的典型应用。 因为只有2…

Frostmourne - Elasticsearch源日志告警配置

简介 配置Frostmourne 接入Elasticsearch源进行日志匹配告警&#xff0c;并静默规则&#xff0c;告警消息发送到企业微信&#xff0c;告警信息使用Markdown。 部署安装教程查看&#xff1a; https://songxwn.com/frostmourne_install ELK 安装教程&#xff1a;https://songx…

【Python】新手入门学习:详细介绍开放封闭原则(OCP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍开放封闭原则&#xff08;OCP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyT…

【Linux】进程控制与进程调度

Linux进程介绍 进程的基本概念 Linux是多用户、多任务的操作系统。在这样的环境中&#xff0c;各种计算机资源的分配和管理都是以进程为单位进行的。 Linux操作系统包括三种不同类型的进程&#xff1a; 1&#xff09;交互进程&#xff1a;一种由Shell启动的进程。交互进程既可…

车辆监控系统:AI赋能黑科技,砼车监管有哨兵!

或许您也有兴趣看看这些&#xff1a; 超级调度 | 砼行ERP 搅拌站运转效率提高30% 生产控制 | 一机双控 省钱 省事 增收 智能地磅 | 自助过磅 料仓联动 自助卸料 管理系统 | 混凝土 用砼行 协同管理 | 智能制造 生产协同 ↓添加下方好友&#xff0c;获取更详细的资料