![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 81
迷雾江湖
奋斗中的菜鸟程序员
展开
-
排序算法(一) 冒泡排序
冒泡排序是最简单的排序算法,至少我是这样。我会的第一种排序就是冒泡排序,这个排序算法思路简单,而且代码很简洁,唯一的缺点就是效率低一些。但对于新手来说,也不失为一种容易上手的排序算法!一、什么是冒泡排序: 见文知意,冒泡排序。冒泡排序的关键就是冒泡!冒什么样的泡呢? 按升序排列就是冒最大数那个泡,按降序排 列就是冒最小数那个泡!二、算法描述:原创 2017-11-17 20:45:55 · 290 阅读 · 0 评论 -
排序算法(二) 快速排序
一、什么是快速排序? 快速排序是对冒泡排序的改进,本质上都是通过交换两个元素来消除逆序。 在冒泡排序中,由于扫描过程中只对相邻的两个元素进行比较,因此在互换两个相邻元素时只能消除一个逆序。 而在快速排序中,能通过两个不相邻的元素的交换,消除待排序记录中的多个逆序,则速度较冒泡排序有极大的提高。二、快速排序实现算法思路: (1)原创 2017-11-17 18:28:19 · 328 阅读 · 0 评论 -
排序算法(三) 直接插入排序与折半插入排序
一、什么是插入类排序? 插入类排序默认有一个已经排好序的序列,而后面的操作就是将未排好序的元素有序插入到已排好序的序列中。 将所有未排好序的元素插入到合适位置,即可得到一个有序序列。二、需要了解的几类插入类排序算法。 (1)、直接插入排序 直接插入排序是一种基本的插入排序算法。算法思路很简单!以升序为例:原创 2017-11-18 17:09:30 · 1123 阅读 · 0 评论 -
排序算法(四) 希尔排序
一、引入希尔排序 通过理解直接插入排序的算法,我们可以发现算法的时间耗费主要在查找合适位置和移动元素为待排元素腾位置。因此,直接插入排序算法,在待排序的元素序列基本有序且序列元素较少时,其性能最佳! 而希尔排序就是利用了直接插入排序最佳性能的两个性质,因为它可以通过算法实现使序列越来越有序(不到最后一步,都不是真正有序)且元素较少!所以在时间耗费上,希尔排序原创 2017-11-18 19:52:23 · 426 阅读 · 0 评论 -
排序算法(五) 简单选择排序
一、什么是选择类排序? 顾名思义,选择类排序的核心就是“选择”,为什么选择呢?怎么样选择呢? 选择类排序的基本思路就是: 在待排序序列中选择一个最小(最大)的元素出来,并将之放到合适的位置上,最终将待排序序列变成一个有序的序列。二、有哪些选择类的排序算法? 根据选择元素的方式不同,我们讨论两种选择类排序算法:简单选择排序和堆排序。原创 2017-11-18 20:11:50 · 446 阅读 · 0 评论 -
排序算法(六) 堆排序
一、什么是堆排序? 堆排序也是一种选择类排序,但它选择元素的方式和简单选择排序大不相同。 它将待排序数组看成一个完全二叉树,并通过建立大根堆或小根堆的算法使之成为一棵特殊的完全二叉树。为什么说其特殊呢? 用大根堆完全二叉树来说,任何一个结点的值大于等于它的左右子树的根的值。而小根堆完全二叉树恰好相反,任何一个结点的值小于等于它的左右子树的根的值。 举原创 2017-11-19 16:49:55 · 589 阅读 · 0 评论 -
排序算法(七) 2路归并排序
一、什么是归并排序? 归并排序的特点体现在 “归并” 上,“归并” 就是“合并”!将两个或两个以上有序的序列合并为一个有序的序列。而2路归并就是将两个有序序列合并为一个有序序列。二、一个2路归并排序的图例:三、由上图得出归并排序思路: 、怎样合并两个有序序列(在后面程序中给出) 、实现归并算法:将r1[ ] 中的元素用归并法排序后放到 r3[原创 2017-11-23 17:16:13 · 1568 阅读 · 0 评论