python 基础知识点(蓝桥杯python科目个人复习计划39)

news2025/1/21 0:54:30

今日复习内容:排序

昨天晚上快睡的时候,脑子里就突然想到了排序,所以就打算再复习一遍相关知识点。

我先说一下冒泡排序,冒泡排序其实很好理解,比如有n个人排队(从矮到高),先从这n个人中找出最高的那个,放到最后,然后忽略最高的那个,从剩余的n-1个人中再找出最高的那个,一直重复这个操作,就完成了排队,在这个过程中,最矮的那个同学是最后才排的,而且比他高的n-1个人都排好了,他就直接去剩下的那个位置就行,因此,虽然有n个人,只需要排n-1次就行,这就是冒泡排序的基本原理,它的时间复杂度是O(n^2),所以应该使用双重循环。

现在,我来把它编成代码:

n = int(input('请输入一个整数:'))
a = list(map(int,input().split()))
for i in range(1,n):
    for j in range(n - i):
        if a[j] > a[j + 1]:
            a[j],a[j + 1] = a[j + 1],a[j]
print(' '.join(map(str,a)))

运行结果:

 

简单来说,就是一直找最大的那个数,一直往后排,最小的数字放第一位就行。

然后是选择排序,我举个例子,有n个同学排队(从矮到高),从这n个同学中找出最矮的那个,放在第一位,然后忽略它,再从剩余的n - 1个同学中找出最矮的那个,一直重复该操作,等前面n - 1个同学都排好了,最高的那个都不用重复上述操作了,直接去最后就行,所以,虽然有n个同学排队,但是只需要n - 1次排列,它的时间复杂度仍然是O(n^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(i,n):
        if a[j] < min_value:
            min_value = a[j]
            min_idx = j
    a[i],a[min_idx] = a[min_idx],a[i]
print(' '.join(map(str,a)))

运行结果:

 

这个做法呢,就是一直找小的数,最大的那个直接放最后就行。

接下来是插入排序,我举个例子,有n个 同学排队(从矮到高),首先,先站成一排,不管顺序,先把n个位置占满,此时,将第一个同学看作已经排列正确的,然后,从最后一个开始,两个两个的比较,比你前面高的,你就在后面站着,如果你比前面那个矮,就往前排,一个一个的插进去,但是呢,n - 1个人都排好了,剩着的那个直接去空位上就行,所以,虽然有n个人参与排队,但是,n-1次循环就搞定了,时间复杂度仍然是O(n^2)这就是插入排序的基本原理。

现在,我来把它编成代码。

n = int(input('请输入一个正整数:'))
a = list(map(int,input().split()))
for i in range(1,n):
    value = a[i]
    insert_idx = 0
    for j in range(i - 1,-1,-1):
        if a[j] > value:
            a[j + 1] = a[j]
        else:
            insert_idx = j + 1
            break
    a[insert_idx] = value
print(' '.join(map(str,a)))

运行结果:

 

下一个,是快速排序,我举个例子。有n个同学排队(从矮到高),随便找出一个同学A,让他站着别动,然后,把剩下的这n-1个同学分成两部分,一部分比他矮,另一部分比他高,然后矮的那些同学就排在同学A前面,高的那部分同学就排在A同学后面,最后,分别对这两部分的同学按顺序排列就行了,这个方法的时间复杂度和空间复杂度就比较复杂了,是O(nlogn)(我记得我在某一篇里写过),这就是快速排序的基本原理。

现在,我来把它编成代码:

def partition(a,left,right):
    idx = left + 1
    for i in range(left + 1,right + 1):
        if a[i] <= a[left]:
            a[i],a[idx] = a[idx],a[i]
            idx += 1
    a[left],a[idx - 1] = a[idx - 1],a[left]
    return idx - 1


def 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)))

运行结果:

 

接下来是归并排序,我举个例子:

有两个列表a和b,我要把它们合并起来,假设a是空的,则只需要排列一下b内的元素(从小到大),b为空时操作一样,有点意思的就是两个列表都不为空,那就一个元素一个元素的比就可以了。

现在,我来把它编成代码:

n = int(input('请输入一个整数:'))
a = list(map(int,input().split()))


def Merge(a,b):
    result = []
    while len(a) != 0 and len(b) != 0:
        if a[0] <= b[0]:
            result.append(a.pop(0))
        else:
            result.append(b.pop(0))
    result.extend(a)
    result.extend(b)
    return result

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

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

运行结果:

 

OK,终于写完了,我待会儿会继续复习的,那这篇就这样吧。

代码方面有问题的话,可以给我发私信的,一起交流讨论,备战蓝桥杯!

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

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

相关文章

Codeforces Round 923 (Div. 3) C. Choose the Different Ones(Java)

比赛链接&#xff1a;Round 923 (Div. 3) C题传送门&#xff1a;C. Choose the Different Ones! 题目&#xff1a; ** Example** ** input** 6 6 5 6 2 3 8 5 6 5 1 3 4 10 5 6 5 6 2 3 4 5 6 5 1 3 8 10 3 3 3 4 1 3 5 2 4 6 2 5 4 1 4 7 3 4 4 2 1 4 2 2 6 4 4 2 1 5 2 3 …

强大的头像制作神器微信小程序源码/支持外卖CPS等优惠劵小程序源码

强大的头像制作神器微信小程序源码&#xff0c;支持外卖CPS等优惠劵小程序源码&#xff1b;这是一款目前见到比较丰富的头像制作小程序&#xff0c;拥有丰富的模板&#xff0c;多种分类基本大全。 支持直接获取微信头像&#xff0c;或者直接上传图片&#xff1b;另外上传的话还…

代码控制邮件服务器发送电子邮件

1、引言 在用户注册的时候我们如果需要让用户接收动态验证码通常有两种方式。一种是给用户发送短信验证码&#xff0c;另一种是发送邮箱验证码。而发送短信验证码的话就必须购买短信流量&#xff0c;这无疑增加了投入的成本&#xff0c;那么此时我们可以使用发送邮箱验证码的形…

Vision Transformer Pytorch 实现代码学习记录

目前运营的社交平台账号&#xff1a; CSDN 【雪天鱼】: 雪天鱼-CSDN博客哔哩哔哩 【雪天鱼】: 雪天鱼个人主页-bilibili.com 可能后续有更新&#xff0c;也可能没有更新&#xff0c;谨慎参考 V1.0 24-02-13 ViT 代码的基本训练, 预测推理脚本运行 1 学习目标 能用官方的 ViT…

渗透测试练习题解析 3(CTF web)

1、[网鼎杯 2020 朱雀组]phpweb 1 考点&#xff1a;反序列化漏洞利用 进入靶场&#xff0c;查看检查信息&#xff0c;发现存在两个参数 func 和 p 查看页面源代码 payload&#xff1a;funcfile_get_contents&pphp://filter/resourceindex.php 整理后&#xff0c;就是 PHP 代…

操作系统——1.3 操作系统运行环境

1.3 操作系统运行环境 一、概念 操作系统运行机制总览 应用程序与内核程序 特权指令与非特权指令 内核态与用户态 CPU在内核态与用户态的切换 操作系统运行机制的总结 中断和异常总览 中断的作用 中断的类型 内中断的例子 外中断的例子 中断的分类&am…

腾讯云4核8G服务器多少钱?轻量和CVM报价2024新版

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;标准型SA2服务器1444.8元一年&#xff0c;轻量应用服务器4核8G12M带宽一…

漫漫数学之旅018

文章目录 经典格言数学习题古今评注名人小传 - 库尔特哥德尔 经典格言 一个毫无自由的社会——一个人凡事都要遵循严格统一的规则——将在行为上既不一致也不完全&#xff0c;甚至不能解决某些也许很重要的问题。——库尔特哥德尔&#xff08;Kurt Gdel&#xff09; 库尔特哥德…

机器学习:卷积介绍及代码实现卷积操作

传统卷积运算是将卷积核以滑动窗口的方式在输入图上滑动&#xff0c;当前窗口内对应元素相乘然后求和得到结果&#xff0c;一个窗口一个结果。相乘然后求和恰好也是向量内积的计算方式&#xff0c;所以可以将每个窗口内的元素拉成向量&#xff0c;通过向量内积进行运算&#xf…

C++ 音视频原理

本篇文章我们来描述一下音视频原理 音视频录制原理: 下面是对这张思维导图的介绍 摄像头部分: 麦克风采集声音 摄像头采集画面 摄像头采集回来的数据可以用RGB也可以用YUV来表示 图像帧帧率 一秒能处理多少张图像 图像处理 &#xff1a;调亮度 图像帧队列 :意思是将数据取…

算法刷题:盛水最多的容器

盛水最多的容器 .习题链接题目题目解析算法原理我的答案 . 习题链接 盛水最多的容器 题目 题目解析 VH*W h为左右两边低的一边,w为左右两边之间的距离 算法原理 定义两个指针 left0,rightn-1; left从左往右对数组进行遍历,right从右往左进行遍历 遍历的过程中,每一次都需要…

10块钱的AI数字人!

&#x1f525;10元的小报童写‬出了500元的‬价值&#xff01; 所以就爆了&#x1f525;&#xff01; 不到两天‬就冲到‬了近3000人&#xff01; 太恐怖了&#xff0c;大佬的微‬信都被加‬爆了&#xff0c; 10块钱还配套‬了一个‬群 就是这‬么牛逼&#xff01; 可能‬…

有状态DHCPv6快速模式配置及EUI-64介绍

正文共&#xff1a;1024 字 15 图&#xff0c;预估阅读时间&#xff1a;3 分钟 我们现在已经熟悉了IPv6的地址架构&#xff08;IPv6地址架构一本通&#xff09;&#xff0c;掌握了IPv6地址的手工配置方式&#xff08;IPv6从入门到精通&#xff09;和DHCPv6有状态地址配置&#…

svg基础(八)滤镜-feTurbulence(湍流)

feTurbulence&#xff1a;湍流滤镜 湍流滤镜&#xff0c;不稳定气流&#xff0c;能够实现半透明的烟熏或波状图像。 通常用于实现一些特殊的纹理。滤镜利用 Perlin 噪声函数创建了一个图像。噪声在模拟云雾效果时非常有用&#xff0c;能产生非常复杂的质感&#xff0c;利用它可…

算法-----高精度算法1(高精度加法,高精度减法)(详解)

什么是高精度算法&#xff1f; 高精度的意思就是他得名字----高的精度&#xff0c;简单说就是位数很大&#xff0c;而高精度算法就是将这些高精度数&#xff08;位数很大在几百几千几万位的数叫高精度数&#xff09;通过计算机的型式模拟出来结果。 为什么要用高精度算法&…

【运维测试】移动测试自动化知识总结第1篇:移动端测试介绍(md文档已分享)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论移动测试相关知识。主要知识点包括&#xff1a;移动测试分类及android环境搭建&#xff0c;adb常用命令&#xff0c;appium环境搭建及使用&#xff0c;pytest框架学习&#xff0c;PO模式&#xff0c;数据驱动&#xff0…

力扣精选算法100道——【模板】前缀和(一维)

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 目录 &#x1f6a9;了解题意 &#x1f6a9;算法原理 &#x1f388;设定下标为1开始 &#x1f388;取值的范围 &#x1f6a9;实现代码 &#x1f6a9;了解题意 第一行的3和2&#xff0c;3代表行数&#xff0c;2代表q次查询(…

Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)

文章目录 题面链接题意题解代码总结 题面 链接 C. Kefa and Park 题意 求叶节点数量&#xff0c;叶节点满足&#xff0c;从根节点到叶节点的路径上最长连续1的长度小于m 题解 这道题目主要是实现&#xff0c;当不满足条件时直接返回。 到达叶节点后统计答案&#xff0c;用…

结构体,位段问题

结构体&#xff0c;位段问题 一、结构体二、结构体内存分配问题三、存在内存对齐的原因四、结构体传参问题五、结构体实现位段 一、结构体 1.简单说说结构体是什么?  结构体就是把不同的数据类型整合到一起,组成的一个数据类型!!  2.结构体的创建和初始化 struct Stu {char…

【复现】Supabase后端服务 SQL注入漏洞_48

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Supabase是什么 Supabase将自己定位为Firebase的开源替代品&#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。 Sup…