随笔分类 - 基于比较的排序方法
摘要:字典树类似于二叉树 每一个节点中都有一个指针数组 存的是字符串的一个字符 字典树可以进行查找,统计计数,排序,代码如下 忘记写查询了....
阅读全文
摘要:桶排序的思想是创建n个桶 桶排序要求元素的位数相同 我们取到元素中最大值的最高位和最小值的最高位 如果他们相同,可以往次高位选取,再相同再向下选取 如果不同,得到最大值与最小值的那一位,创建a-b+1个桶 比如158 247 354 666 541 234 980 147 就要创建9个桶,因为最小值
阅读全文
摘要:堆排序的核心是首先创建一个堆 分大根堆和小根堆 堆可以想象成一个完全二叉树 大根堆 每一个根节点的值都要大于它的任意的孩子 小根堆 每一个根节点的值都要小于它的任意的孩子 由于要经常交换节点,那么还要考虑交换后交换下来的节点和他孩子们大小的关系 我们可以把这个调整的过程封装成一个函数 代码如下 Ad
阅读全文
摘要:归并排序的思想是将数组分成n个有序的数组 刚开始可以想象把数组分成length个数组,每个数组只有一个元素 那么他们一定是有序的 然后不停的将两个有序的数组进行合并,最后合并成完整的数组 代码如下
阅读全文
摘要:希尔排序是对插入排序的一种优化 插入排序是每个元素依次插入有序数组中 如果比有序数组的最大值大就依次向前比较 而希尔排序则是将数组分组 首先确定一个增量,这里我取得增量是数组长度的一半 将数组元素中距离为增量的各个元素分成一组,进行插入排序 然后增量变成原来一半,重新分组,进行插入排序 直到增量变为
阅读全文
摘要:他的思想是找到一个值,小的放在他的左面,大的放在他的右面。 这样左右两边都只需要在自己的范围内比较了 一般用递归来实现 快速排序和其他基于比较的排序方法来说 比较次数少 下面是没有优化的快排代码 其中Sort的代码如下: 利用的是挖坑填补法,把数组第一个参数的位置当做标准值 优化1 上面这种写法是两
阅读全文
摘要:两两相互比较,把大的放后面小的放前面,就是冒泡排序 冒泡排序有两处优化 1.当本轮排序没有元素交换位置,说明排序已经结束。 2.记录本轮最后一次交换位置的元素,因为这个位置后面的元素没有发生过交换,说明这个位置后面的元素都是有序的
阅读全文
摘要:插入排序的思想类似于打扑克(这个我比较喜欢) 抓到的第一张牌是有序的 接下来抓到大的放右边,抓到小的放左面 从而实现整个数组的排序 插入排序适用于每个元素离它最终位置都不远的情况
阅读全文
摘要:在数组中随便找个数认为他最大,用这个数和数组中其他数比较 比这个数大就让最大的数等于这个数
阅读全文

浙公网安备 33010602011771号