四.排序(冒泡/选择)

目录

11-排序介绍

常见排序算法:

12-冒泡排序介绍

代码要求:

思路:

13-冒泡排序

代码:

14-选择排序

简单写法:

好的写法:


11-排序介绍

排序:将一组“无序”的记录序列调整为“有序”的记录序列。
列表排序:将无序列表变为有序列表
输入:列表
输出:有序列表
升序与降序
内置排序函数:sort()

常见排序算法:

12-冒泡排序介绍

列表每两个相邻的数,如果前面比后面大,则交换这两个数.

一趟排序完成后,则无序区减少一个数,有序区增加一个数。

代码要求:

列表每两个相邻的数,如果前面比后面大,则交换这两个数。

一趟排序完成后,则无序区减少一个数,有序区增加一个数。

代码关键点:趟、无序区范围.

思路:

走了多少趟,每次谁和谁交换(一趟中交换了多少次).

假设一共有n个元素.
--那就要走(n-1)趟,因为最后一趟不需要走了.
第0(i=0)趟--两两交换需要n-1--->排出最大值1                 n-1-1--->得出次大值2                  n-1-2... n                  n-1-i

13-冒泡排序

代码:

​
import random
def bubble_sort(li):for i in range(len(li)-1):  #第i趟for j in range(len(li)-i-1):    #每i趟,箭头移到的次数(j)if li[j] > li[j+1]:     #如果下面的值大于上面的值. 那么这两个值就互相换位置. 以此类推.li[j], li[j+1] = li[j+1], li[j]
​
li=[random.randint(0,9999) for i in range(100)]
print(li)
print('*-*'*30)
bubble_sort(li)
print(li)

14-选择排序

简单写法:

--缺点:占用双倍内存 一个循环+两个遍历(min,remove),复杂度较高.

​
def select_sort_simple(li):li_new = []     #创建一个新列表,接收值(有序)for i in range(len(li)):    #循环n次,min_val = min(li)       #依次找到最小的数,li_new.append(min_val)  #放入新列表.li.remove(min_val)      #将就列表的值依次移除.return li_new
​
li=[4,2,3,6,7,1]
print(select_sort_simple(li))

好的写法:

--不开辟新的列表.

只需要交换最小的就行啦.

循环遍历n次,每次找到最小的值,最小的值交换到最前面,

def select_sort(li):for i in range(len(li)-1):  #循环n趟(i是第几趟)min_loc = i     #假设最小的值在无序的第一个位置.for j in range(i+1,len(li)):    #循环无序的值,if li[j]<li[min_loc]:       #如果值小于假设的那个最小的值.min_loc = j         #假设的最小的值就换.if min_loc !=i:        li[i], li[min_loc] = li[min_loc], li[i] #最小的值与无序的最小的值交换.print(li)
li = [5,3,1,5,2,8,1,4]
print(li)
select_sort(li)
-----------------
[5, 3, 1, 5, 2, 8, 1, 4]
[1, 3, 5, 5, 2, 8, 1, 4]
[1, 1, 5, 5, 2, 8, 3, 4]
[1, 1, 2, 5, 5, 8, 3, 4]
[1, 1, 2, 3, 5, 8, 5, 4]
[1, 1, 2, 3, 4, 8, 5, 5]
[1, 1, 2, 3, 4, 5, 8, 5]
[1, 1, 2, 3, 4, 5, 5, 8]

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

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

相关文章

CentOS 7 编译安装 Nginx

CentOS 7 编译安装 Nginx 背景下载 Nginx 源码包安装依赖包编译添加环境变量添加守护查考文献 背景 一开始使用 docker 搭建了一个 web 服务器&#xff0c;但是由于 docker 不太方便的部署 TLS 证书&#xff0c;故使用 Nginx 做反向代理&#xff0c;实现 https 连接。 下载 N…

C#进阶实践项目(俄罗斯方块)

CSharp进阶实践项目--俄罗斯方块 1.需求分析 2.复用贪吃蛇开始等场景切换的代码 &#xff08;自己写一遍&#xff0c;不难&#xff01;&#xff01;&#xff01;&#xff09; 入口&#xff1a; 更新接口&#xff1a; Game 类&#xff1a; BeginOrEndBaseScene 类&#xff1a;…

【Flink】Flink 中的时间和窗口之窗口API使用

1. 窗口的API概念 窗口的API使用分为按键分区和非按键分区&#xff0c;在定义窗口操作之前&#xff0c;首先就要确定好是基于按键分区Keyed的数据流KeyedStream来开窗还是基于没有按键分区的DataStream上开窗。 1.1 按键分区窗口&#xff08;Keyed Windows&#xff09; 按键…

Android视角看鸿蒙第六课(module.json5中的各字段含义之pages)designWidth的用法

Android视角看鸿蒙第六课(module.json5中的各字段含义之pages&#xff09; 导读 前面几篇文章&#xff0c;我们陆续分析了entry->src->main下的module.json5中的各个字段的含义及作用。目前剩余pages和abilities两个字段&#xff0c;本篇文章一起来了解pages。 过程有错…

用Stable Diffusion生成同角色不同pose的人脸

随着技术的不断发展&#xff0c;我们现在可以使用稳定扩散技术&#xff08;Stable Diffusion&#xff09;来生成同一角色但不同姿势的人脸图片。本文将介绍这一方法的具体步骤&#xff0c;以及如何通过合理的提示语和模型选择来生成出更加真实和多样化的人脸图像。 博客首发地…

【Python】进阶学习:一文解决如何从指定的源目录中,挑选出符合条件的文件,并将这些文件复制到目标目录中

【Python】进阶学习&#xff1a;一文解决如何从指定的源目录中&#xff0c;挑选出符合条件的文件&#xff0c;并将这些文件复制到目标目录中 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化…

音频剪辑软件评测,哪一款最适合你?

“音频剪辑小白求解&#xff01;我正在制作一部个人纪录片&#xff0c;拍摄了很多原始音频素材&#xff0c;但是需要进行剪辑和整理才能使用。我完全不懂音频剪辑&#xff0c;请问有没有简单易懂的教程或者方法&#xff0c;帮助我快速上手并完成剪辑工作呢&#xff1f;” 随着…

5_相机标定_3_calibrateCamera()例子

上次介绍了calibrateCamera()接口参数&#xff0c;这次实际调用。 程序中所用标准标定板。 一、图片预处理 使用的图片原像素是3072*2048&#xff0c;即600万像素&#xff0c;处理起来不快&#xff1b;改成了560*420&#xff0c;即20万像素。调用opencv接口如下&#xff1a; //…

阿里通义灵码体验

点击访问体验 之前有体验过github的代码助手&#xff0c;奈何收费了&#xff0c;上周发现有一个免费的代码助手。 下载安装 vscode 搜索扩展 TONGYI Lingma 安装完成后登陆即可体验 写注释让他写代码 根据上下文自动补充 这里我只写了一个方法名&#xff0c;getAgencyList…

linux安装erlang

摘要 Erlang是一种通用的面向并发的编程语言&#xff0c;它由瑞典电信设备制造商爱立信所辖的CS-Lab开发&#xff0c;目的是创造一种可以应对大规模并发活动的编程语言和运行环境。 环境准备 系统环境 使用命令&#xff1a;uname -a 或者 uname -r&#xff0c;执行后如下&a…

浅谈SQL注入漏洞原理及利用方式

1.SQL注入 原理&#xff1a; 在数据交互中&#xff0c;前端的数据传入到后台处理时&#xff0c;由于后端没有做严格的判断&#xff0c;导致其传入的恶意“数据”拼接到SQL语句中后&#xff0c;被当作SQL语句的一部分执行。漏洞产生于脚本&#xff0c;注入是针对数据库进行。 …

Javaweb的学习21_CSS_属性

CSS的属性 (常用)属性&#xff1a; 1. 字体、文本 font-size&#xff1a;字体大小 color&#xff1a;文本颜色 text-align&#xff1a;文本的对齐方式 line-height&#xff1a;行高 2. 背景 background&#xff1a;是个复合属性 3. 边框 border&#xff1a;设置边框&#xff0c…

WordPress自动生成原创文章插件

WordPress作为最受欢迎的内容管理系统之一&#xff0c;为博客和网站的搭建提供了便捷的解决方案。而在内容创作方面&#xff0c;自动生成原创文章的插件为WordPress用户提供了更为高效的选项。 什么是WordPress自动生成原创文章插件&#xff1f; WordPress自动生成原创文章插件…

【NLP学习记录】One-Hot编码

1. One-Hot编码概念 one-hot编码的基本思想是将每个类别映射到一个向量&#xff0c;其中只有一个元素的值为1&#xff0c;其余元素的值为0。这样&#xff0c;每个类别之间相互独立&#xff0c;不存在顺序或距离关系。 举例&#xff1a;对于三个类别的情况&#xff0c;可以使用…

基于协同过滤的毕业生就业推荐系统python+django+flask

功能&#xff1a; 管理员&#xff1a;主页、个人中心、求职者管理、企业管理、招聘信息管理、就业信息管理、面试邀请管理、就业签约管理、投递的简历管理、系统管理 企业&#xff1a;主页、个人中心、求职者管理、招聘信息管理&#xff08;可看见所有的招聘信息。发布招聘信息…

三 C#插入排序算法

简介 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤…

【iOS】Blocks

文章目录 前言一、什么是Blocks二、Blocks模式1.Block语法2.Block类型变量3.截获自动变量值4.__block说明符5.截获的自动变量 三、Blocks的实现1.Block的实质__main_block_impl_0Block对象的实现结构体初始化 2.截获自动变量值3.__block说明符4.Block存储域5.__block变量存储域…

数据结构——lesson10排序之插入排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

python之数据类型转换

基本数据类型转换 Python 中基本数据类型转换的方法有下面几个。 方法说明int(x [,base ])将x转换为一个整数float(x )将x转换到一个浮点数complex(real [,imag ])创建一个复数str(x )将对象 x 转换为字符串repr(x )将对象 x 转换为表达式字符串eval(str )用来计算在字符串中…

Linux的背景介绍

1.Linux的发展史 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff08…