排序算法三:堆排序 数据结构和算法

排序算法三:堆排序

一、堆排序原理 通过最大堆的性质可以知道:一个堆中最大的元素总是在堆顶的,即数组下标0的位置。基于这一点,我们可以每次都把堆中的最大值提取出来,放到当前数组的后面。然后重新构建最大堆,重复这个过程,以...
阅读全文
排序算法之计数排序 数据结构和算法

排序算法之计数排序

一、计数排序 其基本思想为:假设n个输入的元素中的每一个都是在0到k之间的一个整数,对于每一个输入元素x,确定小于x的元素个数,直接把x放在它输出的数组中的位置上。例如有17个元素小于x,则x就应该在...
阅读全文
排序算法之冒泡排序 数据结构和算法

排序算法之冒泡排序

一、原理 冒泡排序的原理很简单, 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。 冒泡排序是一种稳定的排序算法。 冒泡排序不管在什...
阅读全文
排序算法之选择排序 数据结构和算法

排序算法之选择排序

一、原理 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找...
阅读全文
排序算法之插入排序 数据结构和算法

排序算法之插入排序

一、原理 从排序序列的第二个元素开始,依次往前面查询,知道找到一个合适的位置就把它插进去。每个元素在交换完成之后都是一个有序序列,它的时间复杂度为O(n^2)。 排序逻辑: (更多…)
阅读全文
排序算法之快速排序 数据结构和算法

排序算法之快速排序

一、原理 选择排序的原理是分治,把排序序列切分成若干个小组后分别排序。每次排序都以随机的一个元素作为哨兵(一般都以排序区间的中间元素或者首元素作为哨兵),比他大的元素都放到右边,比它小的都放到左边。然...
阅读全文