Python学习-----Day06——排序

news2024/11/24 18:45:22

冒泡排序

    冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端

实例:

def bubbleSort(arr):
    n = len(arr)
 
    # 遍历所有数组元素
    for i in range(n):
        for j in range(0, n-i-1):
 
            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]
 
arr = [64, 34, 25, 12, 22, 11, 90]
 
bubbleSort(arr)
 
print ("排序后的数组:")
for i in range(len(arr)):
    print ("%d" %arr[i]),

运行结果:
排序后的数组:
11
12
22
25
34
64
90

 选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

实例:

A = [64, 25, 12, 22, 11] 
  
for i in range(len(A)): 
      
   
    min_idx = i 
    for j in range(i+1, len(A)): 
        if A[min_idx] > A[j]: 
            min_idx = j 
                
    A[i], A[min_idx] = A[min_idx], A[i] 
  
print ("排序后的数组:") 
for i in range(len(A)): 
    print("%d" %A[i])

运行结果
排序后的数组:
11
12
22
25
64

插入排序

    插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

 实例

def insert_sort(tg_list):
	''' 排序算法:插入排序 '''
    for i in range(1,len(tg_list)):
        for j in range(i,0,-1):
            if tg_list[j] < tg_list[j-1]:
                tg_list[j-1], tg_list[j] = tg_list[j], tg_list[j-1]
            else:
                break
list_ = [8, 5, 1, 1, 8, 5, 7, 4, 6, 3]
insert_sort(list_)

二分查找

    二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

nums = [1,2,33,44,66,77,567]

a = 1    
       
left = 0                # 最小数下标  
right = len(nums)-1     # 最大数下标

while left <= right:
    mid = int((left + right)/2)
    guess = nums[mid]
    if guess == a:
        print(mid)
        break
    elif guess > a:
        right = mid -1
    else:
        left = mid + 1

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

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

相关文章

C# InformativeDrawings 生成素描画

效果 项目 下载 可执行程序exe下载 源码下载

【Python-Django】基于TF-IDF算法的医疗推荐系统复现过程

复现步骤 step1&#xff1a; 修改原templates路径&#xff0c;删除&#xff0c;将setting.py中的路径置空 step2&#xff1a; 注册app python manage.py startapp [app名称]在app目录下创建static和templates目录 step3&#xff1a; 将项目中的资源文化进行拷贝 step4&#…

7 使用Docker容器管理的tomcat容器中的项目连接mysql数据库

1、查看容器的IP 1&#xff09;进入容器 docker exec -it mysql-test /bin/bash 2&#xff09;显示hosts文件内容 cat /etc/hosts 这里容器的ip为172.17.0.2 除了上面的方法外&#xff0c;也可以在容器外使用docker inspect查看容器的IP docker inspect mysql-test 以下为…

python openai宠物名字生成器

文章目录 OpenAICompletion宠物名字生成器提示词工程 prompt enginering 构建应用程序 OpenAI OpenAI 已经训练了非常擅长理解和生成文本的领先的语言模型。我们的 API 提供对这些模型的访问&#xff0c;可用于处理几乎任何涉及”语言处理“的任务。 Completion 补全&#x…

26 mysql 索引的存储更新删除

前言 这里来看一下 mysql 中索引的 增删改查 查询在前面的系列文章中都有使用到 这里 来看一下 增删改 的相关实现 索引记录 和 数据记录 的处理方式是一致的 索引的存储 创建数据表如下, 除了主键之外, 创建了一个 field1, field2 的一个联合索引 CREATE TABLE tz_…

【Python 零基础入门】Pandas

【Python 零基础入门】第七课 Pandas 【Python 零基础入门】第七课 PandasPandas 是什么?为什么 选择 PandasPandas 的特征Pandas 的应用场景Pandas 底层 安装 PandasSeries 数组什么是 Series?Series 创建 Series 数组操作数据检索数据修改过滤Series 数组运算总结 DataFram…

js对url进行编码解码的三种方案,JS在url中如何传递参数或特殊符号

为什么要进行url编码&#xff1f; 当你的URL里出现%2F 怎么办&#xff1f;JS在url中如何传递参数或者特殊符号呢&#xff1f;在url链接中会经常碰到一些%2F、%2B等特殊符号怎么解决呢&#xff1f;下面我们来了解一下&#xff1a; 根据RFC标准&#xff0c;有些符号在URI中是不…

OpenHarmony docker环境搭建

OpenHarmony docker环境搭建 要求一台安装ubuntu的虚拟机,vscode软件 安装docker 在 Ubuntu 上安装 Docker 非常直接。我们将会启用 Docker 软件源&#xff0c;导入 GPG key&#xff0c;并且安装软件包。 首先&#xff0c;更新软件包索引&#xff0c;并且安装必要的依赖软件…

运放的常见应用(收藏)

运放对于外人来说可能有点陌生&#xff0c;但它在我们生活中无处不在&#xff0c;运放的最基本电路符号&#xff1a; 01 放大器 1、反相放大器电路图 输入输出波形&#xff1a; 2、同相放大器&#xff1a; 输入输出波形&#xff1a; 3、电压跟随器 输入输出波形&#xff1a; 4、…

快速了解什么是jwt及如何使用jwt

一、导言 1、什么是jwt及组成部分 JWT&#xff08;JSON Web Token&#xff09;是一种用于在网络应用间安全传递声明&#xff08;claim&#xff09;的开放标准。它由三部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&…

git cherry-pick命令

问题场景&#xff1a; 需要把dev分支的代码&#xff0c;合并到master分支中&#xff0c;但是又不能根据整个分支合并&#xff0c;所有使用cherry-pick命令&#xff0c;根据提交的commit号来合并 问题描述&#xff1a; 原因分析&#xff1a; 解决方案&#xff1a; 1.在dev分支…

2023年中国乘用车金属冲压件产量、需求量及行业市场规模分析[图]

汽车冲压件&#xff0c;主要是指通过压力机和冲压模具对金属材料施加外力&#xff0c;使之产生塑性变形或分离&#xff0c;从而获得所需形状和尺寸的工件&#xff0c;广泛应用于汽车覆盖件、白车身系统、座椅系统、仪表系统及排气系统等部件&#xff0c;汽车车身的金属件几乎全…

Redis第一章:初识

目录 1.1 Redis介绍 1.2 Redis 特性 1.3 Redis 使⽤场景 1.3.1 Redis 可以做什么 1.3.2 Redis 不可以做什么 1.4 安装并启动 Redis 1.5 Redis 命令⾏客⼾端 1.1 Redis介绍 Redis 是⼀种基于键值对&#xff08;key-value&#xff09;的 NoSQL 数据库&#xff0c;与很多键…

中小学生使用全光谱台灯对眼睛好不好?2023口碑好的护眼台灯推荐

近年来&#xff0c;我国青少年近视问题呈现高发性、低龄化、重度化趋势。根据国家卫健委的数据&#xff0c;我国儿童青少年总体近视率为53.6%。特别是在前几年疫情期间&#xff0c;由于观看电子屏幕时间增长、户外运动时间减少&#xff0c;与往年相比&#xff0c;我国中小学生近…

3.1 面向对象的思想

思维导图&#xff1a; **第3章 面向对象(上)** **目录** 1. 面向对象的思想 2. 封装性 3. 继承性 4. 多态性 **3.1 面向对象的思想** - 面向对象是一种编程思想&#xff0c;与现实生活中的事物和它们之间的关系相对应。 - 面向过程分析问题&#xff0c;通过函数实现步骤&…

安卓APP:有读写权限,却读取不到照片的怪事

这是我的&#xff1a; 忽然想起用京东时也碰到过&#xff1a;

RabbitMQ之Exchange(交换机)属性及备用交换机解读

目录 基本介绍 主要结论 备用交换机 springboot代码实战&#xff08;备用交换机&#xff09; 实战架构 工程概述 RabbitConfigDeal 配置类&#xff1a;创建队列及交换机并进行绑定 MessageService业务类&#xff1a;发送消息及接收消息 主启动类RabbitMq01Application…

GO 语言的并发模式你了解多少?

工作中查看项目代码&#xff0c;发现会存在使用 GO 语言做并发的时候出现各种各样的异常情况&#xff0c;有的输出结果和自己期望和设计的不一致&#xff0c;有的是程序直接阻塞住&#xff0c;更有甚者直接是程序 crash 掉。 实际上&#xff0c;出现上述的情况&#xff0c;还是…

spring6-事务

文章目录 1、JdbcTemplate1.1、简介1.2、准备工作1.3、实现CURD①装配 JdbcTemplate②测试增删改功能③查询数据返回对象④查询数据返回list集合⑤查询返回单个的值 2、声明式事务概念2.1、事务基本概念①什么是事务②事务的特性 2.2、编程式事务2.3、声明式事务 3、基于注解的…

NewStarCTF2023week2-ez_sql

闭合之后尝试判断字段数&#xff0c;存在WAF&#xff0c;使用大小写绕过&#xff08;后面的sql语句也需要进行大小写绕过&#xff09; ?id1 Order by 5-- 测出有5列 ?id1 Order by 6-- 查一下数据库名、版本、用户等信息 ?id1Union Select database(),version(),user(),4,…