摘要: 介绍: 堆排序在 top K 问题中使用比较频繁。堆排序是采用二叉堆的数据结构来实现的,虽然实质上还是一维数组。二叉堆是一个近似完全二叉树 。 二叉堆具有以下性质: 步骤: 构造最大堆(Build_Max_Heap):若数组下标范围为0~n,考虑到单独一个元素是大根堆,则从下标n/2开始的元素均为大 阅读全文
posted @ 2019-08-22 18:13 刹那·F·清英 阅读(47) 评论(0) 推荐(0)
摘要: 介绍:快速排序通常明显比同为Ο(n log n)的其他算法更快,因此常被采用,而且快排采用了分治法的思想,所以在很多笔试面试中能经常看到快排的影子。可见掌握快排的重要性。 步骤: 排序演示: 源代码:(python实现) 阅读全文
posted @ 2019-08-22 18:11 刹那·F·清英 阅读(31) 评论(0) 推荐(0)
摘要: 介绍: 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 先考虑合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 再考虑递归分解,基本思路是 阅读全文
posted @ 2019-08-22 18:09 刹那·F·清英 阅读(42) 评论(0) 推荐(0)
摘要: 介绍: 希尔排序,也称递减增量排序算法,实质是分组插入排序。由 Donald Shell 于1959年提出。希尔排序是非稳定排序算法。 希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至 阅读全文
posted @ 2019-08-22 18:07 刹那·F·清英 阅读(27) 评论(0) 推荐(0)
摘要: 介绍: 插入排序的工作原理是,对于每个未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 步骤: 排序演示: 源代码:(python实现) 阅读全文
posted @ 2019-08-22 18:05 刹那·F·清英 阅读(26) 评论(0) 推荐(0)
摘要: 介绍: 选择排序无疑是最简单直观的排序。它的工作原理如下。 步骤: 源代码:(python实现) 阅读全文
posted @ 2019-08-22 18:03 刹那·F·清英 阅读(30) 评论(0) 推荐(0)
摘要: 介绍: 冒泡排序的原理非常简单,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 步骤: 源代码:(python实现) 阅读全文
posted @ 2019-08-22 18:01 刹那·F·清英 阅读(48) 评论(0) 推荐(0)