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

    文章

    4456

    浏览量

    90759
  • 指针
    +关注

    关注

    1

    文章

    473

    浏览量

    70364
  • 数据处理
    +关注

    关注

    0

    文章

    510

    浏览量

    28248
收藏 人收藏

    评论

    相关推荐

    C语言实现经典排序算法概览

    冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
    的头像 发表于 02-25 12:27 227次阅读
    C语言实现经典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概览

    十大排序算法总结

    排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法及其相关的问题。一般在面试中最常考的是快速
    的头像 发表于 12-20 10:39 720次阅读

    排序算法有哪些

    1. 归并排序(递归版) 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治策略,即分为两步:分与治。 分:先递归分解数组成子数组 治:将分阶段得到的
    的头像 发表于 10-11 15:49 323次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>有哪些

    排序算法之选择排序

    选择排序: (Selection sort)是一种简单直观的排序算法,也是一种不稳定的排序方法。 选择排序的原理: 一组无序待排数组,做升序
    的头像 发表于 09-25 16:30 843次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>之选择<b class='flag-5'>排序</b>

    PCB设计必须掌握的规律和规则汇总

    无论设计的PCB大小形状如何,高速信号还是低速信号,高密度多层走线还是低密度单层走线,总有一部分规则是共通的,熟练掌握这些规律,可以大大提高画板的效率
    发表于 09-05 15:09 240次阅读

    FPGA排序-冒泡排序介绍

    排序算法是图像处理中经常使用一种算法,常见的排序算法有插入排序、希尔
    发表于 07-17 10:12 671次阅读
    FPGA<b class='flag-5'>排序</b>-冒泡<b class='flag-5'>排序</b>介绍

    Python实现的常见内部排序算法

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部
    发表于 07-06 12:35 257次阅读
    Python实现的常见内部<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    常见排序算法分类

    本文将通过动态演示+代码的形式系统地总结十大经典排序算法排序算法 算法分类 —— 十种常见排序
    的头像 发表于 06-22 14:49 633次阅读
    常见<b class='flag-5'>排序</b><b class='flag-5'>算法</b>分类

    详解DeepMind排序算法

    DeepMind 的这一发现确实居功至伟,但不幸的是,他们未能解释清楚算法。下面,我们来详细看看他们发布的一段汇编代码,这是一个包含三个元素的数组的排序,我们将伪汇编转换为汇编:
    的头像 发表于 06-21 15:38 261次阅读

    利用强化学习来探索更优排序算法的AI系统

    前言 DeepMind 最近在 Nature 发表了一篇论文 AlphaDev[2, 3],一个利用强化学习来探索更优排序算法的AI系统。 AlphaDev 系统直接从 CPU 汇编指令的层面入手
    的头像 发表于 06-19 10:49 397次阅读
    利用强化学习来探索更优<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的AI系统

    详细介绍8种最常用排序算法

    在计算机科学领域中,排序算法是一种基本的算法排序算法可以将一个数据集合重新排列成一个按照某种规则有序的集合,
    的头像 发表于 06-06 14:52 2451次阅读

    C语言经典排序算法总结

    本文将通过动态演示+代码的形式系统地总结十大经典排序算法
    发表于 06-05 10:56 393次阅读
    C语言经典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>总结

    Linux中which,whereis, whatis三者的区别?

    which,whereis和whatis都是Linux环境中常用的命令行工具,在日常使用Linux时应熟练掌握其区别和使用方法。
    的头像 发表于 06-01 15:14 1028次阅读

    排序算法之“归并算法”介绍

    在说这个题目之前先来说说一个排序算法 “归并算法” 归并算法采取思想是分治思想,分治思想简单说就是分而治之,将一个大问题分解为小问题,将小问题解答后合并为大问题的答案。乍一看跟递归思想
    的头像 发表于 05-22 10:03 429次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>之“归并<b class='flag-5'>算法</b>”介绍

    Linux下终端中命令操作常用的快捷键

    的工作达到事半功倍的效果,熟悉常用的终端命令快捷键可以很大程度上提高我们的工作效率。 下面是平时常用的终端快捷键,希望小伙伴们熟练掌握,并灵活运用。
    的头像 发表于 05-12 10:54 2018次阅读