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

    文章

    4816

    浏览量

    98796
  • 指针
    +关注

    关注

    1

    文章

    484

    浏览量

    72010
  • 数据处理
    +关注

    关注

    0

    文章

    655

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式春招笔试高频算法题(附解题思路)

    要求” 其实,嵌入式春招笔试的算法题,不考偏题、难题,重点考察“基础算法+嵌入式场景适配”,核心题型就那几种,只要掌握解题思路、熟练代码实现,就能稳稳拿分。 今天这篇,专为备战
    发表于 03-18 10:08

    Kubernetes kubectl命令行工具详解

    kubectl是Kubernetes官方提供的命令行工具,作为与Kubernetes集群交互的主要接口,它通过调用Kubernetes API Server实现对集群资源的全面管理。在生产环境中,运维工程师需要熟练掌握kubectl命令来完成日常的集群运维、应用部署、故障排查和性能优化等工作。
    的头像 发表于 02-02 16:40 687次阅读

    MAX16050/MAX16051:具备反向排序功能的电压监控与排序电路

    MAX16050/MAX16051:具备反向排序功能的电压监控与排序电路 在电子系统设计中,对电源电压的精确监控和有序控制至关重要。Maxim Integrated推出的MAX16050
    的头像 发表于 01-31 17:15 1014次阅读

    PID控制的算法

    PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足
    发表于 01-23 08:18

    C语言插入排序算法和代码

    插入排序排序算法的一种,它不改变原有的序列(数组),而是创建一个新的序列,在新序列上进行操作。   这里以从小到大排序为例进行讲解。   基本思想及举例说明   插入
    发表于 01-15 06:44

    软件加密中有哪些常用的加密算法

    软件加密中,有哪些常用的加密算法
    发表于 12-26 06:00

    光纤线芯都是按照什么颜色排序

    多次有朋友留言问到,光纤熔接颜色如何排序,这个在实际应用中还是比较多的,那么今天我们就不讲原理了,直接用图文简单明了讲光纤熔接色谱,大家可以了解下。 一、常规排序 1、4芯的排序:蓝、橙、绿、棕
    的头像 发表于 12-19 11:02 2587次阅读

    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 1184次阅读

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

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

    一文掌握Linux命令

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

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

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

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

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