`

我的软考之路(六)——数据结构与算法(4)之八大排序

阅读更多

排序是编程的基础,在程序中会经常使用,好的排序方法可以帮助你提高程序运行的效率,所以学好排序,打好基础,对于程序的优化会手到擒来。无论你的技术多么强,如果没有基础也强不到哪去。

不多说了,我们直接进入今天的主题。

总有人说排序很难,但是我总觉得很简单,我们只需要了解基本思想就好了,通过简单的例子来加深理解。

 

1、直接插入排序

 

(1)简介:直接插入排序,从字面意思可以看出,直接插入数据完成排序。

(2)基本思想:在插入第i个数时,假设前i-1数已经排好序了,只需要将第i个数插入到i-1中,使得这i个数也是顺序的。

(3)例如:

 

2、希尔排序(Shell排序)

 

(1)简介:希尔排序又称为缩小增量排序,是对直接插入排序方法的改进。

(2)基本思想:将整个序列分成多个子序列,然后分别进行直接插入排序,直到整个序列中的所有数基本有序时,再对整体进行一次直接插入排序。

(3)例如:

 

3、简单选择排序

 

(1)简介:简单选择排序也叫直接选择排序,其实说白了跟直接插入排序的道理特别简单,效率低。

(2)基本思想:首先在 n个数中选择一个最小的数,并将它从中删除,作为新的一组数的第一个;再在剩下的数中选择最小的数,将它从中删除,作为新的一组数的第二个。。。。如此反复,直到排序完成,最后得到一组从小到大排序的数。

(3)例如:

 

4、堆排序

 

(1)简介:堆排序是一个相当有用的排序技术,特别适用于对大量的记录进行排序。同时,堆排序也是对简单选择排序的改进。

堆的定义:n个元素的序列{K1,K2,...,Kn}当满足下列关系时,称为堆:Ki≤K2i且Ki≤K2i+1或者Ki≥K2i且Ki≥K2i+1。注意:堆树必须是一颗完全二叉树。

(2)基本思想:利用堆积树这种数据结构所设计的一种排序,可以利用数组的特点快速的定位指定索引的元素。

最大堆:父结点大于或等于儿子结点

最小堆:父结点小于或等于儿子结点

(3)例如:

将序列{20,60,26,30,36,10}调整为递增序列。

1、首先将数据建立完全二叉树,填充规则是按层次遍历将数据一一填入,最后构建最小堆;

2、提取堆顶并调整删除队顶后的元素为新堆;

3、重复第2步,直到堆空;

4、每次提取的堆顶依次排序即为递增序列。

 

5、冒泡排序

 

(1)简介:冒泡排序,就跟水里的物体一样,小的往上浮,大的往下沉。

(2)基本思想:将数组垂直排列,取出最后一个元素逐个向上交换,得到大数(小数),继续步骤一的操作,直到排序完成。

(3)例如:

 

6、快速排序

 

(1)简介:快速排序是目前内部排序中速度最快的一种排序算法。

(2)基本思想:选取一个数据(通常是数组的第一个数)作为关键数据,然后将所有比它小的数都放在它前面,所有比它大的数都放在它后面,这个过程称为一趟快速排序,再从分开的部分选取基准数,进行分组划分,重复执行,直到完成。

(3)例如:

 

7、归并排序

 

(1)简介:归并排序又称为二路合并操作,使用合并操作完成排序的算法。

(2)基本思想:将两个或两个以上的有序表合并成一个新的有序表,最后将所有的有序表合成一个整体有序表。

(3)例如:

 

8、基数排序

 

(1)简介:前面介绍的排序方法都是对元素进行的,基数排序是对元组进行的。

(2)基本思想:从低位到高位依次对待排序的数进行分配和收集,经过d趟分配和收集,就可以得到一个有序序列。

(3)例如:

 

排序算法对比

 

总结

 

人处理图像的能力是最强的,相信你通过这一张张的图,你已经学会了这八种排序。

 

 

 

后续博客的更新列表,敬请期待。

 

我的软考之路(一)——开篇已更新

我的软考之路(二)——J2SE宏观总结已更新

我的软考之路(三)——数据结构与算法(1)之线性表已更新

我的软考之路(四)——数据结构与算法(2)之树与二叉树已更新

我的软考之路(五)——数据结构与算法(3)之图已更新

我的软考之路(六)——数据结构与算法(4)之八大排序已更新

我的软考之路(七)——数据结构与算法(5)之查找已更新

 

分享到:
评论

相关推荐

    《C++语言描述——数据结构算法与应用》

    《C++语言描述——数据结构算法与应用》是一本深入探讨C++编程语言在数据结构和算法应用方面的专业书籍。本书旨在帮助读者理解和掌握如何利用C++高效地实现各种数据结构和算法,从而提升编程技能和解决问题的能力。...

    计算机科学与工程领域——数据结构与算法的专著 C/C++数据结构算法

    本书是关于计算机科学与工程领域的基础性研究科目之一——数据结构与算法的专著。 本书在简要回顾了基本的C++程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法...

    编程的灵魂——数据结构+算法=程序

    编程的灵魂——数据结构+算法=程序编程的灵魂——数据结构+算法=程序编程的灵魂——数据结构+算法=程序编程的灵魂——数据结构+算法=程序

    数据结构、算法与应用——C++语言描述.rar

    《数据结构、算法与应用——C++语言描述》是一本深入探讨计算机科学核心领域的经典教材。数据结构和算法是编程的基础,它们对于理解和优化程序性能至关重要。本书通过C++语言来阐述这些概念,使得读者能够更好地掌握...

    数据结构课程设计五——排序算法综合分析.doc

    数据结构课程设计五——排序算法综合分析 该资源是一个数据结构课程设计的五个部分,主要讲解排序算法的综合分析。该资源涵盖了多种排序算法,包括直接插入排序、希尔排序、快速排序、冒泡排序、堆排序和归并法排序...

    数据结构与算法 Python语言描述 ——裘宗燕版

    《数据结构与算法 Python语言描述》是裘宗燕编著的一本专著,它深入浅出地介绍了数据结构和算法的基础知识,特别是如何利用Python语言进行实现。这本书以高清且带有目录的形式,使得读者能够方便地查找和学习相关...

    数据结构与算法分析C++语言描述第四版参考答案

    《数据结构与算法分析C++语言描述第四版》是一本深度探讨数据结构和算法的经典教材。这本书由Mark Allen Weiss撰写,旨在帮助读者理解和掌握如何在C++编程环境中有效地设计和实现数据结构及算法。第四版更新了内容,...

    数据结构与算法分析——Java语言描述

    数据结构与算法分析——Java语言描述.pdf

    数据结构与算法——C++版

    学习《数据结构与算法——C++版》这本书,不仅可以深入理解数据结构和算法的原理,还能掌握如何在C++环境中高效地实现它们,这对于提升编程技能和解决实际问题具有重要意义。通过阅读书中的例子和练习,你可以更好地...

    算法与数据结构课程设计——排序

    《算法与数据结构课程设计——排序》 在计算机科学中,排序是处理数据的重要操作,尤其是在数据分析、数据库管理和算法效率优化等领域。本课程设计主要涵盖了五种常见的排序算法:冒泡排序、直接插入排序、简单选择...

    数据结构与算法应用

    本书是关于计算机科学与工程领域的基础性研究科目之一——数据结构与算法的专著。 本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之...

    常用排序算法总结——数据结构

    常用排序算法总结 数据结构 ppt 课件知识 排序的复杂性 。

    数据结构——算法设计与分析

    本资料集主要探讨的是“数据结构——算法设计与分析”,涵盖了多种常用的数据结构和算法设计策略,如蛮力法和贪婪法。 首先,我们来深入了解数据结构。数据结构主要包括数组、链表、栈、队列、树(二叉树、平衡树如...

    软考之数据结构

    《软考之数据结构》是针对软件设计师考试中关于数据结构这一重要知识点的详细解析。在计算机科学领域,数据结构是研究数据如何在计算机中存储和操作的基础理论,它是算法设计与分析的重要支撑。本资料集包含了多个...

    《数据结构与算法分析》.txt

    ——加菲劳 《数据结构与算法分析》 ――课程内容体系主要内容 教学单元模块 具体教学内容 绪论 绪论部分是全书的预备知识,主要对ADL语言、数据结构与算法、算法分析基础、OOP、和C++做了简单介绍 基本数据结构 ...

    数据结构——图的拓扑排序算法

    深度优先排序、广度优先排序和一种补充算法

    算法与数据结构.pdf

    王教授引用了《算法与数据结构——C语言描述》作为主要教材,并推荐了《数据结构》(许卓群)和《数据结构与算法分析(C++版)》作为参考书籍。 问题求解是计算机科学的基础,它涉及将实际问题转化为计算机可处理的...

    数据结构与算法教程

    这要求我们不仅需要对数据结构有深入的理解,还需要掌握相应的算法设计与分析技能,二者密不可分,共同构成了解决问题的两大基石。 “数据结构与算法教程”一书由章炯民等编著,由华东师范大学出版社出版,是面向...

Global site tag (gtag.js) - Google Analytics