0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

熟练掌握常用的排序算法

冬至配饺子 来源:嵌入式案例Show 作者:嵌Sir 2022-08-20 09:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、前言

排序是数据处理中经常运用的一种重要运算,排序的功能是将一个数据元素(记录)的任意序列,重新排列成一个按照一个规则有序的序列。常用的排序算法我们要熟练掌握。

2、冒泡排序

冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。

示例:

poYBAGMAOruAL01VAAEBj1wgHog062.png

3、选择排序

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

示例:

pYYBAGMAOtKAddFZAADE9s8DT38780.png

4、插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

示例:

poYBAGMAOuSAMzv8AAB-sAsyGzI328.png

5、希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率

但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位

希尔排序先将待排记录序列分割成为若干子序列分别进行插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行一次直接插入排序。

示例:

pYYBAGMAOvaAY8bDAACfNRPrx-0060.png

6、归并排序

归并排序应用的是分治的思想,将大队列划分成小队列,然后小队列内排序,再将排好序的小队列组合成大队列,步骤:

1、将划分成两个队列直到不可再分为止

2、小队列内排序

3、左队列与右队列合并

4、返回合并的队列

示例:

poYBAGMAOxuAA4jjAAEh-jcUQj8079.png

7、快速排序

快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,已达到整个序列有序。一趟快速排序的具体过程可描述为:从待排序列中任意选取一个记录(通常选取第一个记录)作为基准值,然后将记录中关键字比它小的记录都安置在它的位置之前,将记录中关键字比它大的记录都安置在它的位置之后。这样,以该基准值为分界线,将待排序列分成的两个子序列。

一趟快速排序的具体做法为:设置两个指针low和high分别指向待排序列的开始和结尾,记录下基准值baseval(待排序列的第一个记录),然后先从high所指的位置向前搜索直到找到一个小于baseval的记录并互相交换,接着从low所指向的位置向后搜索直到找到一个大于baseval的记录并互相交换,重复这两个步骤直到low=high为止

示例:

poYBAGMAO0CAHg1AAAEAiKJZq68115.pngpYYBAGMAO0aAErN_AABxdMH6wck722.png



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4761

    浏览量

    97148
  • 指针
    +关注

    关注

    1

    文章

    484

    浏览量

    71677
  • 数据处理
    +关注

    关注

    0

    文章

    642

    浏览量

    29808
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下部分: 1 、编程语言 熟练掌握C(C++)语言,这是
    发表于 11-28 07:48

    C语言的常见算法

    # C语言常见算法 C语言中常用算法可以分为以下几大类: ## 1. 排序算法 ### 冒泡排序
    发表于 11-24 08:29

    8种常用的CRC算法分享

    CRC 计算单元可按所选择的算法和参数配置来生成数据流的 CRC 码。有些应用中,可利用 CRC 技术来验证数据的传输和存储的完整性。 8 种常用的 CRC 算法,包括: CRC16_IBM
    发表于 11-13 07:25

    高效管理Kubernetes集群的实用技巧

    作为一名经验丰富的运维工程师,我深知在日常的Kubernetes集群管理中,熟练掌握kubectl命令是提升工作效率的关键。今天,我将分享15个经过实战检验的kubectl实用技巧,帮助你像艺术家一样优雅地管理K8s集群。
    的头像 发表于 08-13 15:57 606次阅读

    三大核心网络设备的运维要点

    作为运维工程师,熟练掌握网络设备的管理和维护是构建稳定IT基础架构的关键。本文将深入探讨交换机、路由器和防火墙这三大核心网络设备的运维要点,从基础配置到高级故障排除,为您提供全面的技术指导。
    的头像 发表于 07-22 16:35 714次阅读

    一文掌握Linux命令

    作为一名运维工程师,熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护,还是面试时的技术考核,Linux命令都是绕不开的核心技能。本文将从实战角度出发,系统梳理运维工程师必须掌握的Linux命令,并结合实际场景解析其应用方法。
    的头像 发表于 07-22 15:23 449次阅读

    熟练掌握ModbusTCP转PROFINET网关的互转技术

    在现代工业生产中,自动化与信息化的深度融合成为提升效率、优化流程的关键。在这一背景下,不同通信协议之间的兼容性与转换能力显得尤为重要,尤其是在广泛应用的Modbus TCP与新兴且高效的Profinet之间。本文将深入探讨Modbus TCP向Profinet转换的过程、技术细节及其应用价值,旨在为工业自动化领域的从业者提供一份实用的知识指南。 添加图片注释,不超过 140 字(可选) 二、Modbus TCP转Profinet网关的重要性 鉴于Modbus TCP与Profinet各自在不同领域的优势
    的头像 发表于 07-07 18:26 254次阅读
    <b class='flag-5'>熟练掌握</b>ModbusTCP转PROFINET网关的互转技术

    单片机常用算法源码下载!

    单片机常用算法源码下载!
    发表于 06-10 20:44

    电机学教程

    电磁关系,熟练掌握各类电机的运行原理及其分析方法: (3)在以上分析的基础上,掌握各种电机的工作特性、外特性、机械特性、调速特性和起动特性等; (4)根据以上所掌握的各种运行特性,熟知其运用场合,分析其
    发表于 05-12 14:50

    别忽视!TNC 插座正确拆卸关乎设备寿命

    正确拆卸 TNC 插座,看似微不足道,实则对设备的稳定运行及使用寿命影响重大。无论是专业技术人员,还是普通使用者,都应熟练掌握正确拆卸方法,避免因操作不当对设备造成损害,进而降低设备维护成本,延长设备使用寿命,确保通信与电子设备高效运转。
    的头像 发表于 03-28 08:57 592次阅读
    别忽视!TNC 插座正确拆卸关乎设备寿命

    PID控制算法的C语言实现:PID算法原理

    在工业应用中 PID 及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握 PID 算法的设计与实现过程,对于一般的研
    发表于 02-26 15:24

    控制咖啡机水温的关键在于NTC温度传感器

    对于热爱咖啡的人来说,一杯完美的咖啡需要精心挑选优质的咖啡豆,熟练掌握烘焙技巧,以及恰到好处地控制水温。在咖啡机中,NTC温度传感器扮演着关键的角色,确保咖啡水温精准控制,让我们享受到口感丰富、浓郁的咖啡体验。
    的头像 发表于 01-14 09:40 1180次阅读

    详解Linux sort命令之掌握排序技巧与实用案例

    在linux系统使用过程中,提供了sort排序命令,支持常用排序功能。 常用参数 sort命令支持很多参数,常用参数如下:   短参数 长
    的头像 发表于 01-09 10:10 1587次阅读

    TimSort:一个在标准函数库中广泛使用的排序算法

    在计算机科学的领域,排序算法是每位学生必学的基础,而排序的需求是每位程序员在编程过程中都会遇到的。 在你轻松调用 .sort() 方法对数据进行排序时,是否曾好奇过,这个简单的方法背后
    的头像 发表于 01-03 11:42 957次阅读

    高薪 mcu 触控算法专家(触控按键,不要触控屏)

    触摸原理,具有触摸算法/硬件的成功设计开发和调测经验(至少熟练掌握电容触摸原理); 5、精通触摸相关安规认证的测试规范; 6、具有触摸算法大量产应用经验,面向家电应用触控算法经验优先;
    发表于 12-27 14:12