当前位置: 首页 > news >正文

常用排序算法

目录

直接插入排序

希尔排序

​编辑

选择排序

堆排序

冒泡排序

快速排序

hoare版

挖坑法

前后指针法

非递归

归并排序

非递归

计数排序


直接插入排序

直接插入排序跟依次模扑克牌一样,将最后一张牌依次与前面的牌比较,最后将牌插入到指定位置

单趟排序:将最后一个数依次与前面的数比较,如果前面的数比最后一个数大,就依次将前面的数后移,知道最后一个数到达位置

整体排序:从第二个数开始,依次进行单趟排序直到最后一个数

注意控制结束应为n-1,因为最后一个数下标为n-1,而每次比较用的下标为end+1,所以当下标为n-2时即比较最后一个数

单趟循环结束应为end>=0,因为如果为end>0,无法与第一个数进行比较

希尔排序

希尔排序是对直接插入排序的优化

希尔排序先将数组按照gap间隔分为几组进行插入排序,然后依次减小gap,再分组对数据进行插入排序,当gap==1时进行排序,数据会变为有序

选择排序

选择排序就相当于一次性摸了一把扑克牌,然后从中依次取出最大和最小分别插在队头和队尾,直到扑克牌有序

单趟排序:令最大和最小的下标为开头的数,然后从第二个数开始遍历直到最后一个数,在此过程中进行比较,改变maxi和mini的值,最后将mini和第一个数进行交换,maxi和最后一个数进行交换

整体排序:进行单趟排序后,改变begin和end的值,直到begin=end结束

注意:在单趟排序结束进行交换时,要注意maxi的下标,如果maxi==begin,那么先进行mini和begin两个数的交换就会将最大值交换到mini位置上,所以要进行判断,如果相等,那要令maxi=mini

堆排序

用向下建堆建大顶堆,然后依次将第一个最大的于最后一个交换

冒泡排序

每趟将一个最大的数排到数组末尾,然后将数组结束下标向前减一,注意控制结束下标

快速排序

hoare版

挖坑法

前后指针法

非递归

归并排序

1.把长度为n的输入序列分成两个长度为n/2的子序列;

​ 2.对这两个子序列分别采用归并排序;

​ 3.将两个排序好的子序列合并成一个最终的排序序列。

非递归

一一归,二二归,四四归

注意控制begin2和end2

计数排序

首先先找出待排序数组中的最大值和最小值,然后创建两者范围的数组,并将这个数组置为全0,然后根据每个数-min得到的值为下标存入创建的数组中,最后根据创建的数组下标+min存回a数组中

相关文章:

常用排序算法

目录 直接插入排序 希尔排序 ​编辑 选择排序 堆排序 冒泡排序 快速排序 hoare版 挖坑法 前后指针法 非递归 归并排序 非递归 计数排序 直接插入排序 直接插入排序跟依次模扑克牌一样,将最后一张牌依次与前面的牌比较,最后将牌插入到指定位…...

MGRE环境下的OSPF

实验拓扑 需求 1 R6为ISP只能配置IP地址,R1-R5的环回为私有网段 2 R1/4/5为全连的MGRE结构,R1/2/3为星型的拓扑结构,R1为中心站点 3 所有私有网段可以互相通讯,私有网段使用OSPF完成。 IP规划 配置IP R1 # interface GigabitEt…...

【计算机毕设】微信小程序案例-学生签到系统

前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 👉IT源码社-SpringBoot优质案例推荐👈 👉IT源码社-小程序优质案例…...

【数据分析】上市公司半年报数据分析

前言 前文介绍过使用网络技术获取上市公司半年报数据的方法,本文将对获取到的数据进行简要的数据分析。 获取数据的代码介绍在下面的两篇文章中 【java爬虫】使用selenium获取某交易所公司半年报数据-CSDN博客 【java爬虫】公司半年报数据展示-CSDN博客 全量数…...

【C++初阶】类和对象——操作符重载const成员函数取地址重载日期类的实现

个人主页点击直达:小白不是程序媛 C系列专栏:C头疼记 目录 前言: 运算符重载 运算符重载 赋值运算符重载 前置和后置重载 const成员 取地址及const取地址操作符重载 使用函数操作符重载完成日期类的实现 前言: 上篇文…...

JAVA中的垃圾回收器(2)

一)G1垃圾回收器: 垃圾收集器迭代停顿时间越少越好,但是垃圾回收的总时间会增多,默认暂停时间默认是200ms 一)垃圾收集器介绍 1)G1垃圾回收器是一款面向服务器的垃圾收集器,主要针对的是配备多颗处理器以及大容量内存的机器,以极高…...

mac 安装homebrew ,golang

mac 安装homebrew ,golang 安装homebrew安装golang选择 apple arm 版本安装配置环境变量 安装homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"回车执行指令后,根据提示操作。具体包括以下提示操作&am…...

李沐——论文阅读——VIT(VIsionTransformer)

一、终极结论: 如果在足够多的数据上面去做预训练,那么,我们也可以不用 卷积神经网络,而是直接用 自然语言处理那边搬过来的 Transformer,也能够把视觉问题解决的很好 (tips:paperswithcode.co…...

uniapp表单验证

以下是一个简单的uniapp表单验证示例&#xff1a; <template><view class"uni-form"><view class"uni-form-item"><view class"uni-form-label">用户名</view><input type"text" v-model"user…...

Crawler4j实例爬取爱奇艺热播剧案例

前言 热播剧数据在戏剧娱乐产业中扮演着着名的角色。热了解播剧的观众喜好和趋势&#xff0c;对于制作方和广告商来说都具有重要的参考价值。然而&#xff0c;手动收集和整理这些数据是在本文中&#xff0c;我们将介绍如何利用 Python 爬虫技术和 Crawler4j 实例来自动化爬取爱…...

uniapp项目APP端安卓ios权限检测教程

导语:在 APP 的日常开发过程中,权限检测与授权是不可避免的一项重要的功能,下面就简单介绍一下如何检测和授权的方法。 目录 原理方法实战原理 此授权方法主要是依托于 HTML5 产业联盟的HTML5+规范实现的。 HTML5 产业联盟官网 获取当前操作系统名称 可以使用uni.getSys…...

java多进程间(父进程与子进程)通信

一般我们在java中运行其它类中的方法时&#xff0c;无论是静态调用&#xff0c;还是动态调用&#xff0c;都是在当前的进程中执行的&#xff0c;也就是说&#xff0c;只有一个java虚拟机实例在运行。而有的时候&#xff0c;我们需要通过java代码启动多个java子进程。这样做虽然…...

【从0到1设计一个网关】整合Nacos-服务注册与服务订阅的实现

文章目录 Nacos定义服务注册与订阅方法服务信息加载与配置实现将网关注册到注册中心实现服务的订阅 Nacos Nacos提供了许多强大的功能&#xff1a; 比如服务发现、健康检测。 Nacos支持基于DNS和基于RPC的服务发现。 同时Nacos提供对服务的实时的健康检查&#xff0c;阻止向不…...

【uniapp】短信验证码输入框

需求是短信验证码需要格子输入框 如图 网上找了一个案例改吧改吧 直接上代码 结构 <template><view class"verify-code"><!-- 输入框 --><input id"input" :value"code" class"input" :focus"isFocus"…...

负载均衡的综合部署练习(hproxy+keepalived和lvs-DR+keepalived+nginx+Tomcat)

一、haproxykeepalived haproxy 2台 20.0.0.21 20.0.0.22 nginx 2台 20.0.0.23 20.0.0.24 客户机 1台 20.0.0.30 这里没有haproxy不是集群的概念&#xff0c;他只是代理服务器。 访问他直接可以直接访问后端服务器 关闭防火墙 安装haproxy和环境&#xff1a; yum in…...

设计模式——策略模式(Strategy Pattern)+ Spring相关源码

文章目录 一、策略模式定义二、例子1. 菜鸟教程例子&#xff08;略有改动&#xff09;1.1 、定义。1.2、定义加法策略类1.3、定义乘法策略类1.4、创建 Context 类1.5、使用 2、JDK awt包——BufferStrategy3、Spring源码 —— InstantiatorStrategy4、Spring源码 —— Instanti…...

ORB-SLAM3算法2之开源数据集运行ORB-SLAM3生成轨迹并用evo工具评估轨迹

文章目录 0 引言1 数据和真值1.1 TUM1.2 EuRoc1.3 KITTI2 ORB-SLAM3的EuRoc示例3 ORB-SLAM3的TUM-VI示例4 ORB-SLAM3的ROS各版本示例4.1 单目4.2 单目和IMU4.3 双目4.4 双目和IMU4.5 RGB-D0 引言 ORB-SLAM3算法1 已成功编译安装ORB-SLAM3到本地,本篇目的是用TUM、EuRoc和KITT…...

Qt 序列化函数和反序列化函数

文章目录 界面学生类序列化函数反序列化函数刷新所选择的下拉表值添加 界面 学生类 // 创建学生信息类 class studentInfo { public:QString id; // 学号QString name; // 学生姓名QString age; // 学生年龄// 重写QDataStream& operator<<操作符&…...

Linux之线程池

线程池 线程池概念线程池的应用场景线程池实现原理单例模式下线程池实现STL、智能指针和线程安全其他常见的各种锁 线程池概念 线程池&#xff1a;一种线程使用模式。 线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待…...

MAC安装stable diffusion

./webui.sh --precision full --no-half-vae --disable-nan-check --api Command: "/Users/xxxx/aigc/stable-diffusion-webui/venv/bin/python3" -m pip install torch2.0.1 torchvision0.15.2 Error code: 2 执行命令&#xff1a; pip install torch2.0.1 torchvi…...

Polars 2.0清洗性能天花板在哪?实测对比Dask/Modin/Vaex:单机1TB数据清洗仅需11.3秒(附完整安装脚本)

第一章&#xff1a;Polars 2.0 大规模数据清洗技巧Polars 2.0 引入了更严格的惰性执行模型、增强的字符串与时间处理能力&#xff0c;以及原生支持多线程 I/O 的 LazyFrame API&#xff0c;显著提升了 TB 级数据清洗的吞吐与可控性。相比 Pandas&#xff0c;其列式内存布局与零…...

IDEA插件MyBatisX实战:3分钟搞定SpringBoot项目CRUD代码生成

MyBatisX插件全流程实战&#xff1a;SpringBoot项目CRUD代码生成效率革命 在快节奏的企业级开发中&#xff0c;重复编写基础CRUD代码就像在键盘上跳机械舞——动作标准却毫无新意。当项目包含20张以上数据表时&#xff0c;手动创建Entity、Mapper、Service等层级代码会消耗开发…...

3张表搞定财务BP工作!财务BP必须会的3张表

做了这么多年财务数据分析&#xff0c;我发现国内很多公司的财务BP&#xff0c;还停留在自己造表的阶段。每人一套表&#xff0c;格式五花八门&#xff0c;数据口径对不上。结果就是BP花大量时间在拉表、对数的琐事上&#xff0c;真正花在业务分析和决策支持上的时间少之又少。…...

突破Wallpaper Engine资源壁垒:RePKG工具全方位应用指南

突破Wallpaper Engine资源壁垒&#xff1a;RePKG工具全方位应用指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 一、RePKG&#xff1a;解锁创意资源的技术钥匙 在数字创意领域…...

PyTorch 2.8镜像真实效果:物理实验→电磁场/流体力学可视化视频

PyTorch 2.8镜像真实效果&#xff1a;物理实验→电磁场/流体力学可视化视频 1. 开箱即用的专业级物理模拟环境 当你第一次启动这个基于RTX 4090D优化的PyTorch 2.8镜像时&#xff0c;最直接的感受就是"专业工具就该这样"。这个镜像不是普通的深度学习环境&#xff…...

C++的std--ranges容错系统

C的std::ranges容错系统&#xff1a;现代编程的稳健之道 在C20标准中&#xff0c;std::ranges库的引入彻底改变了算法与容器的交互方式&#xff0c;其容错机制为开发者提供了更安全、更灵活的编程体验。传统迭代器容易因越界或无效操作导致未定义行为&#xff0c;而std::range…...

开源!手搓ESP-VoCat 喵伴桌面AI助手,帮你养萌宠 OpenClaw龙虾,内置豆包,会听、会动、会陪伴

模组选型&#xff1a;ttps://item.taobao.com/item.htm?ftt&id1033585120956&spma21dvs.23580594.0.0.4fee2c1bAqCiqc&skuId6211360130611 ESP-VoCat 喵伴是乐鑫携手火山引擎扣子大模型团队打造的智能 AI 开发套件&#xff0c;适用于玩具、智能音箱、智…...

SpringBoot集成TTL实现Feign与线程池的TraceId无缝传递(实战优化版)

1. 问题背景与核心挑战 在分布式系统中&#xff0c;日志链路追踪是排查问题的关键手段。想象一下这样的场景&#xff1a;用户请求从网关进入&#xff0c;经过多个微服务处理&#xff0c;每个服务又可能调用其他服务或使用线程池异步处理。当出现问题时&#xff0c;如何快速定位…...

告别恼人红叉!保姆级教程:用acme.sh给宝塔面板IP地址换上Let‘s Encrypt免费证书

从红叉到绿锁&#xff1a;零成本为宝塔面板IP地址部署可信SSL证书全指南 每次打开宝塔面板&#xff0c;那个刺眼的红色安全警告是否让你如鲠在喉&#xff1f;作为服务器管理员&#xff0c;我们比谁都清楚自签名证书的实际安全性&#xff0c;但浏览器固执的警告提示却让新手用户…...

魔兽世界插件开发5分钟速成:从零掌握API查询与宏命令管理终极指南

魔兽世界插件开发5分钟速成&#xff1a;从零掌握API查询与宏命令管理终极指南 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 魔兽世界API文档平台与宏工具是一个专为《魔兽世界》玩…...