![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计
文章平均质量分 80
hackairM
0001 1000 0001 0000 0001 0011 0101 1000 0100 0101 0101
展开
-
计数排序
1.计数排序思想假设n个输入元素中的每一个都是在0到k 区间内的一个整数。对每一个输入元素x 确定小于x 的元素个数。利用这一信息,就可以直接把x 放到它在输出数组中的正确的位置上。2.计数排序实现计数排序-伪代码:FUNCTION Counting_Sort(A, B, k)let C[0, .., k] be a new arrayfor i = 0 to k C[i] = 0fo原创 2016-08-07 16:18:33 · 283 阅读 · 0 评论 -
快速排序
1. 快排思想快排也使用了分治的思想,分为三个过程: 1) 分解:数组A[q, ... , r]被划分为两个子数组A[p, ... , q-1] 和 A[q+1, ..., r],使得A[p, ... , q-1] 中的每一个元素都小于等于A[q] ,而A[q] 也小于等于A[q+1, ..., r] 中的每一个元素。 2) 解决:通过递归调用快排,对子数组A[p, ... , q-1] 和 A原创 2016-08-06 12:16:36 · 228 阅读 · 0 评论 -
堆排序
1. 堆堆是一个数组,又近似于一个完全二叉树。 如图,树上的每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充的。 树的根节点是A[1],给定一个下标i,我们很容易得到它的父节点,左右孩子结点的下标。PARENT(i)return i / 2LEFT(i)return 2 * iRIGHT(i)return 2 * i + 1(在计算机中,通过将i 的值左移原创 2016-08-03 21:17:44 · 412 阅读 · 0 评论 -
最大子数组问题
分治策略中,我们递归的求解一个问题,在每个问题中应用如下三个步骤:1. **分解** 将问题划分为一些子问题,子问题的形式与原问题一样,只是问题规模更小。原创 2016-08-01 10:11:45 · 405 阅读 · 0 评论 -
选择算法
1.问题描述在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。例如:在一个元素集合中,最小值是第1个顺序统计量,最大值是第n个顺序统计量。用非形式化的描述来说,一个中位数是它所属集合的“中点元素”。当n为奇数时,中位数是唯一的,位于i = (n + 1) / 2处。当n为偶数时,存在两个中位数,分别位于i=n/2和i = n/2+1处。输入:一个包含n个(互异的)数的集合A和一个原创 2016-08-07 21:48:14 · 449 阅读 · 0 评论 -
二叉搜索树
1. 什么是二叉搜索树一棵二叉搜索树是以一棵二叉树来组织的。每个结点包括关键字key及其卫星数据,左孩子left, 右孩子right, 父节点p。二叉搜索树中的关键字key总是以满足二叉搜索树性质的方式来存储: 设x是二叉搜索树的一个结点。如果y是x左子树中的一个结点,则y.key <= x.key。如果y是x右子树中的一个结点,则y.key >= x.key。 如图,根节点的关键字为12,在其左原创 2016-08-12 19:35:41 · 341 阅读 · 0 评论