软考之排序算法(一)——插入排序

简介:

 在看软考视频的时候。会发现一到排序算法就開始晕。各种排序算法种类繁多,看着都眼花缭乱的,今天我们就来整理整理这些排序算法。

******************************************************************************************************

    经常使用的排序算法有插入排序、选择排序、交换排序、归并排序、基数排序。

当中插入排序又分为直接插入排序、希尔排序;选择排序又分为简单选择排序、堆排序;交换排序又分为冒泡排序和高速排序。这5大类8种排序算法都属于内部排序(什么是内部排序全部的排序都在内存中完毕的叫做内部排序,假设内存中装不下这些数据,须要内存外存配合起来使用的叫做外部排序)以下我们就来 一一介绍一下这些排序算法。

1、插入排序:直接插入排序

定义两个表一个无序表一个有序表,每次从无序表中取出一个元素,把它插入到有序表中的合适位置。使有序表有序。

详细做法在往有序表中插入第n的记录时,依次依照从前往后的顺序将这条记录与有序表中的逐条记录进行比較,使之插入到有序表中合适的位置。

举例如果一个无序表10,1,4;有序表为:2,3,7,9。现依照从小到大的顺序将无序表中的记录插入到有序表中。

依次将10与有序表中2,3,7,9进行比較2<3<7<9<10。所以将10放在有序表中9的后面。则该有序表变成了2,3,7,9,10。

依次将1与有序表中2,3,7,9,10进行比較。事实上在第一次比較的时候1<2,已经比較出须要将1放在2的前面了,因此不须要进行后面2、3、4、5次的比較。但为了显示效果我将全部的比較过程都列出来了。如上图。

依次将4与有序表中1,2,3,7,9,10进行比較。在第4次比較的时候4<7,所以将4放在7的前面。至此利用直接插入排序算法已经将所有数据排序完成。终于得到的数列是1,2,3,4,7,9,10

 

2、插入排序:希尔排序

介绍希尔排序又称为缩小增量排序,是针对直接排序算法的一种改进,是插入排序算法的一种。

定义先将整个待排记录序列切割成若干个子序列,然后进行直接插入排序,待整个序列中的记录基本有序时,再对总体进行一次直接插入排序。

(由此可见。希尔排序与直接插入排序相比适合于数据量较大的排序。假设数据量较小则直接採用直接插入排序算法;假设数据量较大则採用希尔排序算法)

详细做法先取一个小于n的整数d1作为第一个增量(就是增量小于待排序数列的个数且尽量保证增量为奇数),把待排数列分成d1个组,将全部距离为d1倍数序号的记录放在同一个组中。在各个组内进行直接插入排序;然后去第二个增量d2且保证d2<d1,反复上面的排序工作。

以此类推直至所取增量为1,也就是将全部的记录放在同一组中进行直接插入排序算法为止。

举例定义比較繁琐,我们还是来举样例说明。如果待排数据为5,2,9,1,4,7。现将此数列依照从小到大的顺序进行排列。由于此数列共6个数。所以我们取的增量值要小于6,第一个增量为3。

 

 第二次排序定为增量为1。也就是全部的记录都放在同一个组内。这时候进行直接插入排序。

 

******************************************************************************************************

    限于篇幅的原因,这篇博客先到这里。

兴许还会继续将其它排序算法依次进行总结,敬请期待!





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5225616.html,如需转载请自行联系原作者

相关文章
|
1月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
17 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
1月前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
4月前
|
算法 搜索推荐 C#
|
5月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
5月前
|
算法 搜索推荐
数据结构与算法-插入排序
数据结构与算法-插入排序
31 2
|
5月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
4月前
|
存储 算法 C语言
软考中级之数据库系统工程师笔记总结(二)数据结构与算法
软考中级之数据库系统工程师笔记总结(二)数据结构与算法
35 0
|
5月前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
36 0
|
5月前
|
机器学习/深度学习 搜索推荐 算法
【C/排序算法】:直接插入排序和希尔排序
【C/排序算法】:直接插入排序和希尔排序
45 0
|
5月前
|
搜索推荐 算法
排序算法之插入排序
排序算法之插入排序
43 0