排序算法(一) 基础排序算法

排序算法

排序算法

基础排序算法

排序本质:减小逆序对的过程

在基础排序算法中,将待排序序列分为相对有序区与相对无序区。

每次遍历到数组末尾称为一

冒泡排序(无序区-有序区, O ( n 2 ) O(n^2) O(n2),稳定,就地)

在每一轮中,逐次与下一邻项比较,每次比较将最值者置后,因此每一轮都能将无序区的1个最值放到有序区末尾,最后一轮同时将2个元素完成排序,因此最多仅需遍历 n − 1 n-1 n1次(n:数组元素个数)

extern int a[MAX];
void sort(){for(int j=0;j<MAX-1;j++)//j:冒泡轮数=有序区元素个数for(int i=0;i<MAX-1-j;i++)//i:当前工作指针 MAX-1-j:有序区首元素(无需再进入有序区)if(a[i]>a[i+1]) swap(a[i],a[i+1]);//降序为<
}

简单选择排序(有序区-无序区, O ( n 2 ) O(n^2) O(n2),不稳定,就地)

每轮找到无序区中最值元素,并放到无序区首元素位置,无序区首元素成为有序区末尾

extern int a[MAX];
void sort(){for(int j=0;j<MAX-1;j++) {//无序区首元素下标int min=j;//默认无序区首元素为最小值for(int i=j+1;i<MAX;i++)//遍历一趟无序区获取最小值下标if(a[i]<a[min]) min=i;swap(a[j],a[min]);//交换无序区首元素与无序区最小值}
}

插入排序

直接插入排序(有序区-无序区, O ( n 2 ) O(n^2) O(n2),稳定,就地)

先默认数组首元素为有序区,其之后为无序区。顺序遍历无序区,每轮将无序区首元素,逆序遍历有序区以寻找元素插入点。

extern int a[MAX];
void sort(){for(int j=1;j<MAX;j++){//j:无序区首元素int temp=a[j],i;for(i=j-1;i>=0;i--)//逆序遍历有序区,寻找插入点if(temp<a[i]) a[i+1]=a[i];//a[i]后移else break;//找到插入点a[i+1]=temp;//a[i+1]>temp>a[i]}
}

二分插入排序( O ( n 2 ) O(n^2) O(n2),稳定,就地)

由于有序区已经是有序的,因此寻找插入点时可采用二分优化。

extern int a[MAX];
void sort(){for(int i=0;i<MAX;i++){int temp=a[i],l=0,r=i-1,m;while(l<=r){m=l+r>>1;if(t<a[m]) r=m-1;else l=m+1;}//已找到插入点lfor(int j=i-1;j>=l;j--) a[j+1]=a[j];a[l]=t;}
}

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

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

相关文章

DNF手游攻略:勇士进阶指南!

在即将到来的6月5日&#xff0c;《DNF手游》将迎来一场盛大的更新&#xff0c;此次更新带来了大量新内容和玩法&#xff0c;极大丰富了游戏的体验。本文将为广大玩家详细解析此次更新的亮点&#xff0c;包括新增的组队挑战玩法“罗特斯入门团本”、新星使宠物的推出、宠物进化功…

go语言实现的一个高效,轻量级的文件锁 gflock

在我们对文件进行操作的时候&#xff0c; 如果你不需要你操作的文件被其他协程访问&#xff0c;则就需要使用一个文件锁来对我们操作的文件进行加锁&#xff0c;今天给大家推荐的这个gflock使用也非常简单&#xff1a; 首先安装依赖&#xff1a; go get -u github.com/tekit…

Sectigo EV代码签名证书费用是多少?

随着数字化时代的到来&#xff0c;软件开发者和企业面临着日益严峻的安全挑战。为了确保他们的软件产品免受恶意篡改和仿冒的威胁&#xff0c;代码签名证书应运而生&#xff0c;成为了业界广泛认可的安全解决方案。在众多代码签名证书提供商中&#xff0c;Sectigo以其卓越的信誉…

整理GTX收发器示例工程(高速收发器十一)

前文分析了xilinx官方提供的GTX IP示例工程&#xff0c;该代码的结构比较混乱&#xff0c;本文将该代码进行梳理&#xff0c;形成一个便于使用的模块&#xff0c;后续如果要使用多通道的收发器&#xff0c;多次例化某个模块就行了。 下图是官方例程中GTX IP相关模块的RTL视图&a…

停车场车位引导系统方案升级实施步骤流程是什么,有什么注意事项

停车场车位引导系统是一种现代化的停车管理系统&#xff0c;它通过实时监测车位占用情况&#xff0c;并向驾驶员提供准确的空闲车位导航信息&#xff0c;从而提高停车场的使用效率和用户体验。随着城市交通的快速发展和车辆数量的不断增加&#xff0c;停车场车位引导系统已成为…

薄膜沉积的均匀性怎么计算?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;星球号&#xff1a;63559049&#xff09;里的学员问&#xff1a;经常听带我的工程师说膜层的均匀性不好&#xff0c;均匀性是怎么计算的? 什么是薄膜沉积的均匀性&#xff1f;薄膜均匀性指的是薄膜…

Leetcode刷题笔记7

69. x 的平方根 69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 假设求17的平方根 解法一&#xff1a;暴力解法 从1开始依次尝试 比如1的平方是1&#xff0c;2的平方是4...直到5的平方&#xff0c;25>17&#xff0c;所以一定是4点几的平方&#xff0c;所以等于4…

WSL2-Ubuntu22.04-配置

WSL2-Ubuntu22.04-配置 准备1. WSL相关命令[^1]2. WSL2-Ubuntu22.04可视化3. WSL2 设置 CUDA4. 设置OpenGL 本文介绍了WSL2的基本使用方法及可视化&#xff0c;着重介绍了GPU和OpenGL的设置。 准备 名称版本windows11wsl2CUDA12.5 1. WSL相关命令1 查看已安装的wsl distribut…

官方小游戏项目

一 项目原理&#xff1a;看广告&#xff0c;操作简单&#xff0c;时间自由&#xff0c;适合利用业余时间来做&#xff0c;一个广告大概在15s-30s之间。 二 介绍&#xff1a;给你开代理权限&#xff0c;你就有独立后台管理系统&#xff0c;监测每台手机每条广告的情况&#xff0…

MySQL数据表的“增删查改“

我们学习数据库, 最重要的就是要学会对数据表表进行"增删查改"(CRUD).(C -- create, R -- retrieve, U -- update, D -- delete) 目录 一. "增"(create) 1. 普通新增 2. 指定列新增 3. 一次插入多行 4. 用insert插入时间 5. 小结 二. "查"…

AI科技,赋能企业财务管理

AI技术已深入千行百业&#xff0c;其实际任务解决能力愈发凸显和强劲。正如乔布斯所强调“技术不是为工程师而生&#xff0c;而是为应用而生”。 胜意科技深度集成业内领先技术&#xff0c;将AI融入到实际的财务工作流中&#xff0c;与OCR、RPA等智能技术组合式输出&#xff0c…

Qt-qrencode生成二维码

Qt-qrencode开发-生成二维码&#x1f4c0; 文章目录 Qt-qrencode开发-生成二维码&#x1f4c0;[toc]1、概述&#x1f4f8;2、实现效果&#x1f4bd;3、编译qrencode&#x1f50d;4、在QT中引入编译为静态库的QRencode5、在Qt中直接使用QRencode源码6、在Qt中使用QRencode生成二…

Electron下载插件 or 固件至本地

最近有个特殊需求&#xff0c;由于路由器PCB板子是办公类型&#xff0c;无线传输类型&#xff0c;在特定情况下没有网络支持。则桌面应用程序里面的远程升级路由器功能无法使用&#xff0c;则就需要将OTA升级降至本地通过局域网的HTTP请求去实现。 1.下载代码 Downloads(url){…

BCC编程入门:揭开复杂面纱,探索编程之美

BCC编程入门&#xff1a;揭开复杂面纱&#xff0c;探索编程之美 BCC编程&#xff0c;对于初学者来说&#xff0c;仿佛是一个充满神秘与困惑的迷宫。然而&#xff0c;只要我们勇敢地踏入这片领域&#xff0c;逐步探索&#xff0c;便能够发现其中的奥秘与乐趣。本文将从四个方面…

Django Celery技术详解

文章目录 简介安装和配置创建并调度任务启动Celery Worker在视图中调用异步任务拓展功能 简介 Django Celery 是一个为Django应用程序提供异步任务处理能力的强大工具。它通过与消息代理&#xff08;如RabbitMQ、Redis&#xff09;集成&#xff0c;可以轻松地处理需要长时间运…

接口用例设计

设计接口用例的目的是为了提升工作效率&#xff0c;防止遗漏 并且能够通过用例&#xff0c;来实施测试监控 设计思路 功能 单个接口测试 接口业务场景测试&#xff08;过接口组合测试&#xff09; 性能 响应时间 吞吐量 服务器资源使用率 错误率 并发数 安全 敏感信息是…

LAMP分布式安全方案搭建网页 (LinuxCentOS7+Apache+Mariadb+PHP)包括服务端口及防火墙规则配置

目录 一、实验目的 二、设计方案及规划 三、实验内容及步骤 &#xff08;1&#xff09;实验前基础配置 &#xff08;2&#xff09;Test配置&#xff0c;安装Firefox浏览器和图形界面 &#xff08;3&#xff09;Web安装Apache &#xff08;4&#xff09;Database安装Mari…

微服务架构-微服务架构的挑战与微服务化的具体时机

目录 一、微服务架构的挑战 1.1 概述 1.2 服务拆分 1.3 开发挑战 1.4 测试挑战 1.4.1 开箱即用、一键部署的集成环境 1.4.2 测试场景和测试确定性 1.4.3 微服务相关的非功能测试 1.4.4 自动化测试 1.5 运维挑战 1.5.1 监控 1.5.2 部署 1.5.3 问题追查 1.5.4 依赖管…

高等教育的AI革新:OpenAI面向大学推出ChatGPT Edu

OpenAI推出了ChatGPT Edu&#xff0c;这是一个为大学设计的专用版本&#xff0c;旨在让学生、教职员工、研究人员和校园运营能够负责任地使用AI。 ChatGPT Edu 将AI技术引入了教育领域&#xff0c;其建立在GPT-4o的基础上&#xff0c;它不仅能够处理文本和图像&#xff0c;还…

【线性代数】【一】1. 1 线性方程组与线性组合

文章目录 前言一、线性方程组的求解1.1 直线的交点1.2 向量的加权求和 二、线性组合的表示范围三、线性方程组的解的分析总结 前言 有段时间没更新了&#xff0c;准备开个新坑&#xff0c;写点数学基础相关的内容&#xff0c;计划先过一遍线性代数&#xff0c;再扩展到矩阵论&…