排序算法之-堆排序

堆排序是利用堆的数据结构而设计的一种排序算法。堆是一种完全二叉树,它具有以下性质:即每个节点的值总是大于(或小于)它的父结点的值。 我们会用到两种堆: 大顶堆:每个节点都大于或等于它的子节点的值,称为大顶堆。 小顶堆:每个节点都小于或等于它的子节点的值,称为小顶堆。 每个列表都可以按下标顺序表示为一个二叉树,...

阅读更多

排序算法之-快速排序

快速排序的基本思想是:通过每一趟排序,将列表分为两部分,其中一部分元素值比另一部分元素值都要小,再按这种方法对这两部分分别进行快速排序。最终使整个列表达到有序。 算法步骤 从列表中选一个元素的值作为基准值。 对列表进行排序,比基准小的排在基准前面,比基准大的排在后面。 递归重复步骤 1、2, 对...

阅读更多

排序算法之-归并排序

归并排序是采用分治法的一个典型应用。将列表分为两个子序列,对每个子序列再进行分治,直到每个序列元素个数为1,则这个序列必定是有序的,一步步合并每个子序列,最终整个列表达到有序的状态。 算法步骤 把长度为 n 的列表分成两个长度为 n/2 的子序列。 对这两个子序列分别采用归并排序。 将两个排序好...

阅读更多

中文技术文档写作规范

标点符号 1). 只有中文或中英文混排中,一律使用中文/全角标点。 2). 中英文混排中如果出现整句英文,则在这句英文中使用英文/半角标点。 3). 中文标点与其他字符间一律不加空格。 正确:有:Apple、Android、诺基亚 错误:有:Apple 、 Android 、 Nokia 4). ...

阅读更多

排序算法之-希尔排序

希尔排序又称缩小增量排序,是由Donald.L.Shell于1959年提出而得名。先将原列表按一定增量gap分组,然后对每一组进行插入排序。之后缩小增量gap,再对每组进行排序,直到增量gap缩小为1,再进行排序后即得到最后的有序列表。 比如,原列表为 R(R0, R1, R2, R3, R4, R5, R6,...

阅读更多

排序算法之-插入排序

插入排序中将原列表分为两部分:有序区和无序区,插入排序就是从无序区取出一个元素,按照它的大小插入到有序区内相应位置。 算法步骤 开始时列表中所有元素都在无序区,取第一个元素,它可以被认为是已经有序。 再从无序区取一个元素A,从后向前循环比较有序区的元素,如果有序区的元素较大,则将其向后移动一个位置。...

阅读更多

排序算法之-选择排序

选择排序每次选择一个未排序列表中最大/最小的元素,放到有序位置。 算法步骤 从列表中找到最小的元素,将它放在第一个位置。 从剩下的元素中找到最小的元素,将它放在第二个位置。 重复步骤1、2,直到所有数据都有序。 动图演示 代码示例 #define SORT_OK (0) #de...

阅读更多

排序算法之-冒泡排序

冒泡排序是在每次扫描列表时通过比较相邻两个元素的大小,如果顺序不对就交换过来。就像冒泡一样,每扫描完一次整个列表会将最大/最小的元素排到列表最后。 算法步骤 依次比较相邻两个元素的大小,如果第一个元素大于第二个,就交换两个元素。这样遍历一遍后会把最大的一个元素排列到列表最后。 重复步骤1,直至整个队...

阅读更多