第三章:查找与排序(下)----------- 3.22 总结:10种排序算法的对比分析

数据结构与算法——查找与排序 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录概述一、查找算法顺序存储结构的查找链式存储结构的查找折半查找(二分查找)其他查找算法二、排序算法简单选择排序冒泡排序插入排序归并排序堆排序快速排序排序比较器 概述 以前看到这样一句话,语言只是工具,算法才是程序设计的灵魂。的确,算法在计算机科学中的地位真的很重要,在很多大公司的笔试面试中,算法掌握程度的考察都占据了很大一部分。不管是为了面试还是自身编程能力的提升,花时间去研究常见的算法还是很有必要的。下面是自己对于算法这部分的学习 阅读详情

总结:10种排序算法的对比分析:

 

*基础排序*:

冒牌排序:

       描述:谁大谁上,每一轮都把最大的顶到天花板。

       效率太低 O(n²)------掌握swap。

选择排序:

       效率较低,但经常用它内部的内部循环方式来找最大值和最小值------怎么一次性求出数组的最大值和最小值。 O(n²)

插入排序:

      虽然平均效率低,但在序列基本有序时,它很快,所有也有其适用范围。

 希尔排序:

      缩小增量排序,是插排的改良,对空间思维的训练有帮助。O(n的1.3次方)左右。

*分治法*:

1、子问题的拆分;

2、递归求解子问题;

3、合并子问题的解。

快速排序:

      快速排序是软件工业中最常见的常规排序法,其双向指针扫描和分区算法是核心,往往用于解决类似问题,特别地partition算法用来划分不同性质的元素,也用于著名的topk问题。

      selectK问题。记住。

      O(NlgN),如果主元不是中位数,特别地,如果每次主元都在数组区间的一侧,复杂度将退化为n²。

      工业优化:三点取中法,绝对中值法,小数据量用插入排序。

      快排重视子问题的拆分。

 归并排序:

      空间换时间----------逆序对。

      归并排序重视子问题的合并。

 堆排序:

      用到了二叉堆的数据结构。是掌握树结构的起手式。

      ==堆排+二分查找。

       上面三个都是NlgN的复杂度,其中快排表现最好,是原址的,不用开辟辅助空间;堆排也是原址的,但复杂度的常数因子较大,不具备优势。


       上面七种都是基于比较的排序,可证明它们在元素随机顺序情况下最好是NlgN,可用决策树证明。 


下面三个是非比较排序,在**特定情况**下会比基于比较的排序要快:

计数排序:

      可以说是最快的:O(N+k),k=maxOf(sourceArr),用它来解决问题时必须注意如果序列中的值,分布非常广(最大值很大,元素比较稀疏),空间会浪费很多。

      所以计数排序的适用范围是:**序列的关键字比较集中,已知边界,且边界较小**(比如:年龄)

桶排序:

      先分桶,再用其他排序方法对桶内元素排序,按桶的编号依次检出。(分配--收集)

      用它来解决问题必须注意序列的值是否均匀地分布在桶中。

      如果不均匀,那么个别桶中的元素会远多于其他桶,桶内排序用比较排序,极端情况下,全部元素都挤在一个桶里,还是会退化为NlgN。

      其时间复杂度:O(N+C),其中,C=N*(logN-lgM),约等于NlgN,N是元素数量,M是桶的个数。

基数排序:

      kN级别(k是最大数的位数),是整数数值型排序里面又快又稳的,无论元素分布如何。

      只开辟固定的空间(10个桶)。

       对比桶排序,基数排序每次需要的桶数量并不多,而且基数排序几乎不需要任何“比较”操作,而桶排序在桶数量相对较少时,数据难免集中到一个桶。桶内多个数据必须基于比较操作的排序。

       因此,在实际应用中,对十进制整数来说,基数排序的更好用。


比较:

 


要求:

      1、准确描述算法过程;

      2、写出伪代码;

      3、能分析时间复杂度;

      4、能灵活应用。

算法设计与分析练习题 第一章 下列关于算法的说法中正确的有( )。 Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊 Ⅳ.算法执行后一定产生确定的结果 A. 1 个 B.2 个 C.3 个 D.4 个 T(n)表示当输入规模为 n 时的算法效率,以下算法效率最优的是( )。 A.T(n)= T(n-1)+1,T(1)=1 B.T(n)= 2n2 C.T(n)= T(n/2)+1,T(1)=1 D.T(n)=3nlog2n 什么是算法?算法有哪些特征? 证 阅读详情

相关推荐

智能汽车域控制器FOTA升级方案探讨

上文提到的Entry属性,包括Active 属性, Bootable 属性, Successful 属性, Retrycnt 属性 ,Active 属性用于标志槽的优先级,bootloader优先选择Active 属性=1的槽启动,Bootable 属性标志槽可否可启动,Successful 属性标志槽是否成功启动过,Retrycnt 属性标志槽可尝试启动的次数。芯片启动后,首先进入Bootloader阶段,此阶段将读取存储系统的分区属性,根据属性值进行逻辑判断,并确定进入哪个分区,详见流程图。

huibian1234的博客 1570

排序和查找算法--总结

一、分类 1.内部排序和外部排序  内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程。 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需要对外存进行访问的排序 2.比较类排序和非比较排序 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非.

qq_36006996的博客 1643

各种排序和查找算法的实现与比较

排序 int[] a = new int[]{1,4,6,4,3,2,8,1}; // 冒泡排序 int temp; for (int i = 0; i < a.length; i++){ for (int j = 0; j < a.length-1-i; j++){ if...

dandyjiew 728

点云配准SIFT+SI+RANSAC+ICP

Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。

点云兔子的博客 559

【YOLO26实战全攻略】09——YOLO26多目标跟踪实战宝典:从原理到智慧园区人流统计全流程

多目标跟踪(MOT)是视频分析的核心技术,解决了单帧检测无法关联目标身份的痛点。本文基于YOLO26轻量化检测模型与ByteTrack跟踪算法,从新手视角出发,系统讲解多目标跟踪的核心原理、环境搭建、实操步骤与工程落地。内容涵盖ByteTrack分层关联策略解析、YOLO26集成跟踪的一行代码实现、配置参数调优、区域计数、轨迹数据提取与热力图可视化,最终通过智慧园区人车流量统计虚拟案例,完整呈现从技术原理到实际应用的全流程。本文注重实用价值,所有代码可直接复现,参数配置附带场景化建议,帮助新手快速上手。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 356

十大排序算法和七大查找算法总结(原理讲解和代码实现)

0. 干货总结 0.1 整体分类 首先让我们宏观的分类一下几种排序算法:我们平常所说的排序算法大部分是指内部排序算法,其实还有三种常见的外部排序算法~ 那么什么是内部排序和外部排序呢? 所谓的内排序是指所有的数据已经读入内存,在内存中进行排序的算法。排序过程中不需要对磁盘进行读写。同时,内排序也一般假定所有用到的辅助空间也可以直接存在于内存中。与之对应地,另一类排序称作外排序,即内存中无法保存全部数据,需要进行磁盘访问,每次读入部分数据到内存进行排序。 下面给出它们的具体分类: 内部排序算法

绝圣弃智-零的博客 1720

DDR5 输入时钟抖动规范全解析!技术宅必看

简单说,时钟抖动就是时钟信号边沿的“颤抖”——信号本来应该在某个固定时间跳变,但实际时刻可能会前后波动。这种波动可能是随机的,也可能是确定性的。随机抖动(Random Jitter, Rj):符合高斯分布,像是你家猫咪不经意的晃动。确定性抖动(Deterministic Jitter, Dj):受限于特定周期或模式,像是邻居装修时的规律敲击声。⚠️ 注意,如果时钟抖动超出规格,DDR5可能无法正确接收或发送数据,内存错误、系统崩溃可就跟着来了!

weixin_43199439的博客 392

常用排序算法比较与分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、各种排序算法比较 二、具体排序算法介绍 2.1 冒泡排序 2.2 选择排序 总结 前言 我们在平时学习和工作中经常用到各种排序算法,不仅要考虑算法的时间空间复杂度也要注意稳定性问题。为更好的理解排序算法,在此整理出常见的排序算法,包括:选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序、希尔排序、桶排序、计数排序、基数排序。 一、各种排序算法比较 复...

WonderZYP的博客 3073

视频理解与处理——OpenClaw视频能力深度解析(2026视频版)

本文介绍了OpenClaw视频理解与处理的核心技术,重点分析了视频预处理流程。通过VideoProcessor类实现视频加载、帧采样、尺寸调整和归一化等基础处理功能,支持本地和在线视频源处理,为后续视频分析任务提供标准化输入。预处理模块采用均匀采样和标准化方法优化视频数据,确保动作识别、场景分析等高级应用的准确性,展现了OpenClaw强大的视频处理能力。

一键难忘的博客 464

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

数据结构学习 第三章 搜索和排序算法

​ 该函数与python中自带的min()方法是一个效果,都是找出列表中的最小值,其运行逻辑是假定最小值是第一个并将其索引赋值出来,用第一个与后面每一个数据进行比对,若后面有比该索引更小的数据,将最小索引赋值为更小数据的索引,直到没有一个比该索引对应的值小的,返回最小索引。​ 该函数的复杂度为O(n)。

monsterpiece的博客 143

DeerFlow 系列教程 第十八篇 | 实战案例三——用 DeerFlow 构建自定义 AI 工作流

在实际业务中,许多复杂的内容生产任务不是单一技能就能覆盖的。需要先调研某个主题的最新信息基于调研结果撰写结构化的文章或报告对报告中的数据进行可视化处理最终输出符合品牌风格的排版文档或演示文稿这些环节涉及不同的领域知识和工具链,单个内置技能无法完全覆盖。组合自定义技能、MCP 外部工具和多 Agent 协作,构建端到端的工作流。传统手工流程: DeerFlow 自定义工作流:搜索资料、阅读文献 用户描述需求│ │▼ ▼。

weixin_43674738的博客 205

[翻译]C#数据结构与算法 – 第三章基本排序算法

[翻译]C#数据结构与算法 – 第三章基本排序算法第3章 基本排序算法     对计算机中数据存储的两个最常见的操作是排序与查找。自从计算机工业开始时这就是明确的,所以排序与查找也是计算机科学领域两个研究最多的操作。本书讨论的大部分数据结构都是主要设计为使结构中的数据存储的排序及/或查找更容易且更高效。     本章将为你介绍排序与搜索数据的基本算法。这些算法只需要像数组这样的数据结构

skybot的专栏 576

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

算法设计与分析第三章课后习题(部分)

3.3 题目: 用归并排序算法对两组数组排序: ( 32,15,14,15,11,17,25,51 ) (12,25,17,19,51,32,45,18,22,37,15 ) 解题方法:基础的归并排序算法 代码如下: #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn = 1e

李思成的博客 2423

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机软件基础快速查找算法,计算机软件技术基础3-4 数据结构及算法(查找与排序).ppt...

计算机软件技术基础3-4 数据结构及算法(查找与排序).ppt (52页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!23.9 积分常用数据结构及其运算第三章1§3.1 概述 §3.2 线性表§3.3 栈与队 §3.4 树与二叉树§3.5 图§3.6 查找与排序目录23.6.1 查找的基本概念3.6.2 静态查找技术3.6.3 动态查找技术3.4.4 ...

weixin_33427833的博客 217

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java数据结构与算法-读后感01(简单排序:冒泡,选择,插入)

第三章:关于一些简单排序的比较和代码 简单排序中分为4种类型:   1.冒泡排序(这个想必是各位非常熟悉,平时也接触得比较多的)   2.选择排序   3.插入排序 1.冒泡排序   一般来说,数组中如果有N个数据项,则第一趟排序中有N-1次比较,第二趟有N-2次,依次类推后其序列的求和公式为:   (N-1)+(N-2)+(N-3)+...+1 = N*(N-1)/...

dilianzhuo1928的博客 145

数据结构与算法基础——重要知识点截图【青岛大学-王卓版】

【青岛大学-王卓】数据结构与算法基础(40个小时) 173集:推荐学习-《推荐》 https://www.bilibili.com/video/av82837069?from=search&seid=16668239479775468624 参考书籍: 《数据结构++C语言版++第2版》 链接:https://pan.baidu.com/s/1XhVqQxmX...

刘鑫磊 3万+

数据结构与算法基础-青岛大学-王卓

线性表循环链表。

Java后端技术栈 3404

十四、第三章再续:快速选择SELECT算法的深入分析与实现

十四、亦第三章再续:快速选择SELECT算法的深入分析与实现 作者:July。出处:http://blog.csdn.net/v_JULY_v 。 前言 经典算法研究系列已经写了十三个算法,共计22篇文章(详情,见这:十三个经典算法研究与总结、目录+索引),我很怕我自己不再把这个算法系列给继续写下去了。沉思良...

dinongxu8804的博客 99

第三章——数据结构

软件设计师

qq_45546075的博客 172

866数据结构笔记 - 第八章 排序

866数据结构、湖南大学考研、排序

qq_45331246的博客 2926

数据结构知识点简单总结(考点)

第一章 绪论 1计算机解决问题的步骤:分析问题 设计相应的算法 编写程序调试并得到正确结果。、 2数据元素是数据的基本单位。 3数据结构包括:数据的逻辑结构 存储结构 数据的运算。 4逻辑结构的类型:集合 线性结构 树形结构 图形结构 5顺序存储结构优点:效率高 6链式存储结构优点:便于数据修改,与顺序存储结构相比,链式存储结构的主要缺点是存储空间的利用率低。 7抽象数据类型可用(D,S,P):D...

weixin_44641254的博客 6581

【基础知识】6、数据结构知识点

数据结构基础知识

呆呆的猫的博客 1万+
上一篇: Ubuntu安装Vim与Gcc
下一篇: 第三章:查找与排序(下)----------- 3.23 相关题解:排序数组中找和的因子
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值