蓝桥杯(1):python排序

news2024/11/17 10:50:57

1 基础

1.1 输出

1.1.1 去掉输出的空格

print("Hello","World",123,sep="+")
print("hello",'world',123,sep='')
print('hello','world',123)
#输出结果
#Hello+World+123
#helloworld123
#hello world 123

 1.1.2 以不同的方式结尾

print("Hello","World",123,sep="+",end='apple')
print("hello",'world',123,sep='')
print('hello','world',123)

1.2 输入

input 是字符串类型

1.3 常量变量运算符

int转bool:非0是TRUE,0是FALSE【0和FLASE一一对】

运算符://整除 %取余

关系运算符的结果:TRUE或FALSE!

2 冒泡排序

2.1 算法步骤

运行n-1次,每一次把最大的换到最后

时间复杂度:O(n^2) 空间复杂度:O(1)【没有用到新的空间,是在原来的空间上进行的】,稳定

2.2 代码实现

n = int(input())
a = list(map(int,input().split()))
#循环n-1次,每次获得第i大
for i in range(1,n):
    #每次比较a[j]和a[j+1]的大小,如果前面大就交换
    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)))

3 选择排序

3.1 算法步骤

选择一个最小的放在最左边,核心:选择并储存最小值

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

3.2 具体代码

n = int(input())
a = list(map(int,input().split()))
for i in range(0,n-1):
    min_value = a[i]
    min_idx = i
    for j in range(0+i,n):
        if a[j] < min_value:
            min_value = a[j]
            min_idx = j
    #进行交换
    a[min_idx] = a[i]
    a[i]= min_value    
    #或者写成  都可以哦!
    #a[min_idx],a[i] = a[i],a[min_idx]

#print(a)
print(' '.join(map(str,a)))

4 插入排序

4.1 算法步骤

相当于扑克牌排序

要做的是在一个有序的数组插入一个数字!

 

4.2 具体代码

n = int(input())
a = list(map(int,input().split()))
for i in range(1,n):
    value = a[i]
    insert_idx = 0  #注意这个的设置比较重要,如果比到最后是最小的,则插入的位置是0
    for j in range(i-1,-1,-1):
        if a[j] > value:
            a[j+1] = a[j] #向后挪
        else:
            insert_idx = j+1  #挪不动,说明这个值比a[j]大,则他应该在a[j+1]的位置上!
            break
    a[insert_idx] = value
print(' '.join(map(str,a)))

5 快速排序

5.1 算法步骤

这时3的位置是一定正确的!

核心:怎么选基准,怎么分,怎么递归

5.2 具体代码

#列表a,左端点为left,后端点为right
def partition(a,left,right):
    stand = a[left]
    idx = left+1
    for i in range(left+1,right+1):
        if a[i]<stand:
            a[i],a[idx] = a[idx],a[i]
            idx = idx+1
    a[idx-1],a[left] = a[left],a[idx-1]
    #print(a)
    return idx-1

def quicksort(a,left,right):
    if left<right:
        mix = partition(a,left,right)
        quicksort(a,left,mix-1)
        quicksort(a,mix+1,right)
    return a

a = [5,3,8,1,2,9,4,7,6]
left = 0
right = 8
print(quicksort(a,left,right))

 注意递归的规则是:一定要有结束条件!!!!!这就解释left<right存在的必要性!!!要不然就是死循环!!!

6 归并排序

6.1 算法步骤

6.2 具体代码

合并两个有序的列表,实际还是递归!!!

# 归并排序
# 第一步是变编写代码:合并两个有序的列表!!!!
def Merge(A,B):
    c = []
    while len(A) !=0 and len(B)!= 0:
        if A[0] <= B[0]:
            c.append(A[0])
            A.pop(0)
        else:
            c.append(B[0])
            B.pop(0)
    c.extend(A)
    c.extend(B)
    return c

def Mergesort(a):
    if len(a) < 2:
        return a
    else:
        mix = len(a) //2
        left = Mergesort(a[0:mix])
        right = Mergesort(a[mix:len(a)])
        a = Merge(left,right)
        return a

n = int(input())
a = list(map(int,input().split()))
print(Mergesort(a))

7 桶排序

7.1 算法步骤

为了缩小问题规模!!!

7.2 具体代码

代码的最核心:分桶!!!

找到最大值和最小值,除以总的桶数

def Bucket_sort(a,bucketcount):
    minvalue, maxvalue = min(a),max(a)
    bucketsize = (maxvalue-minvalue+1) // bucketcount #均匀的分开
    res = [[] for i in range(bucketcount+1)]#要多一个桶 放不能整除的那些数字

    #把所有的元素放在对应的桶里
    for i in a:
        idx = (i-minvalue) // bucketsize
        res[idx].append(i)
    ans = []
    for i in res:
        i.sort()
        ans = ans + i
    return ans

n = int(input())
a = list(map(int, input().split()))
print(Bucket_sort(a,5))

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【刷题训练】Leetcode415.字符串相加

字符串相加 题目要求 示例 1&#xff1a; 输入&#xff1a;num1 “11”, num2 “123” 输出&#xff1a;“134” 示例 2&#xff1a; 输入&#xff1a;num1 “456”, num2 “77” 输出&#xff1a;“533” 示例 3&#xff1a; 输入&#xff1a;num1 “0”, num2 “0”…

JavaScript中的Hoisting

概要 本文在Javascript的Execution Context文章基础上&#xff0c;从代码执行的角度来谈谈变量提升&#xff0c;已经为什么let和const的变量不能进行变量提升。 代码分析 var 关键字定义的变量 下面的代码并不会报错&#xff0c;可以正常执行。 console.log(a) var a 0;代…

陪诊小程序开发:暖心陪伴,就医无忧

在繁忙的生活中&#xff0c;就医往往成为了一件让人头疼的事情。挂号、取药、排队……一系列繁琐的流程让人应接不暇。为了让您就医更加便捷、舒心&#xff0c;我们推出了陪诊小程序&#xff0c;为您提供贴心、专业的陪诊服务。 陪诊小程序致力于为用户提供全方位的陪诊体验。…

FreeRTOS操作系统学习——中断管理

中断管理介绍 嵌入式实时系统需要对整个系统环境产生的事件作出反应。这些事件对处理时间和响应时间都有不同的要求。事件通常采用中断方式检测&#xff0c;中断服务例程(ISR)中的处理量应当越短越好。ISR是在内核中被调用的&#xff0c; ISR执行过程中&#xff0c;用户的任务…

校园生活信息平台:Java+Vue+MySQL全栈实践

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【linux深入剖析】操作系统与用户之间的接口:自定义简易shell制作全过程

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.shell2.自定义shell的准…

单据分页的实现

单据分页的实现 1. AceWzcgfkjtMaintainProxy.java package nc.ui.jych.wzcgfkjt.ace.serviceproxy;import nc.bs.framework.common.NCLocator; import nc.itf.jych.IWzcgfkjtMaintain; import nc.ui.uif2.components.pagination.IPaginationQueryService; import nc.vo.jych.…

从政府工作报告探计算机行业发展(在医疗健康领域)

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

如何在Linux系统部署APITable容器并实现无公网IP远程管理本地数据

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c;是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

PMP成绩判定标准是什么?

2024年3月10日的PMP考试已经结束&#xff0c;不知道大家考得怎么样&#xff0c;对于考试难度有没有值得分享或者吐槽的&#xff1f;可以发出来大家交流一下~ 一、3月PMP考试成绩什么时候出&#xff1f; 按照往期考试成绩发布时间&#xff0c;基本在考后6-8周会出成绩&#xf…

OSCP靶场--Astronaut

OSCP靶场–Astronaut 考点(1.CVE-2021-21425getshell 2.suid php提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.12 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 01:24 EDT Nmap scan report for 192.16…

1个二维码能包含多个视频吗?制作视频二维码的方法

二维码在生活中现在随处可见&#xff0c;除了用于支付之外&#xff0c;展示内容也可以通过二维码来展现&#xff0c;比如常见的视频、图片、文件、音频等内容都可以通过二维码来展现。那么当我们需要将多个视频存入一个二维码中展示时&#xff0c;该如何利用二维码生成器的工具…

【超图】导入txt文件至udbx数据源中

作者&#xff1a;taco 最近在支持的过程中&#xff0c;有客户遇到了txt类型的数据导入到udbx中&#xff0c;不知如何导入。本身以为是客户不会用产品&#xff0c;直接叫嚣着客户&#xff0c;数据拿来我看看。 好家伙数据一拿来我直接蒙了。这啥破数据啊。咋一行一行的一点不规整…

【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程

【2024】批量查询CSDN文章质量分 写在最前面一、分析获取步骤二、获取文章列表1. 前期准备2. 获取文章的接口3. 接口测试&#xff08;更新重点&#xff09; 三、查询质量分1. 前期准备2. 获取文章的接口3. 接口测试 四、python代码实现1. 分步实现2. 批量获取文章信息3. 从exce…

程序员想要搞钱不迷茫,这篇文章你可得码好啦!!!

年已经过完了&#xff0c;现在大家基本都已经返工返校了吧&#xff01;咱又要投入到新一年的战斗了&#xff01;春色恼人不等闲&#xff0c;相信咱都有一个实实在在的愿望和期许&#xff1a;身体健康&#xff0c;财源广进&#xff01;新的一年我们还得继续努力&#xff0c;多多…

自定义Model实现一个增删改查等功能的复用型表格QTableView

目录 一、表格功能总结与预览 1.功能总结 2.尚欠缺的功能&#xff08;后续可能会补充&#xff09; 二、功能设计选择原因 1.QTableWidget与MVC模式的QTableview的选择 2.处理数据的方式 所以后续将会选择第二种方式&#xff0c;直接操作数据库&#xff0c;并且通过数据库…

公众号怎么转移主体

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;长期以来&#xff0c;由于部分公众号在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者公众号主体发生合并、分立或业务调整等现实状况&#xff0c;在公众号登记主体不能对应实际运营人的情况下&#xff0…

蓝桥杯前端Web赛道-水果消消乐

蓝桥杯前端Web赛道-水果消消乐 题目链接&#xff1a;2.水果消消乐 - 蓝桥云课 (lanqiao.cn) 题目要求可查看题目文件夹中的effect.gif文件。 下面开始分析题目需要我们做什么 首先显而易见的是&#xff0c;当点到相同的水果的时候&#xff0c;对于的格子消失&#xff1b;如…

论文阅读——Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation image-text contrastive learning(ITC)用在单模态&#xff0c;masked language modeling (MLM) and image-text matching (ITM) 用在多模态。 单模态编码器的表示上引入了中间图像…

在dpvs上实现ICMP的源进源出

目录 1. 缘起2. 源码分析3. 让ICMP也走源进源出1. 缘起 在网络通信中,当一个请求报文从源主机到达目标主机,并经过中间路由器或交换机进行转发时,请求报文进入主机A的路径和响应报文离开主机A的路径可能不同。这种情况下,就会出现所谓的三角路径问题。如下图: 具体来说,…