算法导论
沉睡的雄狮
Android开发工程师
展开
-
排序算法之插入排序详解(附示例代码)
1.插入排序详解和Demo代码 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们的左手为空并且桌子上的牌面向下.然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置.为了找到一张牌的正确位置,我们从右向左将它与已在手中的每张牌进行比较,拿在左手中的牌总是排序好的. 插入排序的伪代码实现INSERTION-SORT for j = 2 to A.length原创 2017-02-08 16:07:45 · 3462 阅读 · 0 评论 -
排序算法之归并排序详解(附Demo)
1.归并排序算法原理 我们学习归并排序算法之前需了解下分治法的概念,归并排序是完全遵循分治模式的. 分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解. 分治模式在每层递归时都有三个步骤: 分解原问题为若干个子问题,这些子问题是原问题的规模较小的实例. 解决这些子问题,递归地原创 2017-02-08 16:45:52 · 569 阅读 · 0 评论 -
排序算法之快速排序详解(附示例代码)
1.快速排序简介 对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n的平方)的排序算法.虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择.因为他的平均性能非常好,它的期望时间复杂度是O(n lg n),而且其中包含的常数因子非常小. 2.快速排序的原理 快速排序与归并排序已有,也使用分治思想.下面介绍下对一个典型的子数组A[p..r]进原创 2017-02-10 15:37:44 · 9988 阅读 · 0 评论 -
排序算法之堆排序详解(附最大堆示例代码)
1.堆的概念(最大堆与最小堆) 堆排序的时间复杂度是n logN,具有nl og N时间复杂度的排序算法还有快速排序和理想状态下的归并排序,一般来说快速排序的性能优于堆排序,但堆排序在实际中也有很多的应用,后续会做具体介绍. 堆指的是堆数据结构,被看成是一个近似的完全二叉树,树上的每一个结点对应数组中的一个元素. 完全二叉树满足两个特性: 1.父结点的键值总是原创 2017-02-12 17:54:24 · 2922 阅读 · 0 评论