02. 数据结构和算法
ExcaliburXK
这个作者很懒,什么都没留下…
展开
-
遗传算法
某种程度上,遗传算法和穷举法相似,都是在解空间里面搜索最优解。但是与穷举法不同,遗传算法是一种概率搜索算法,能以更高的概率检索到较优解。因此在某些场合,使用穷举法是不现实的,但是用遗传算法却可以一试。 某种程度上,遗传算法跟贪心法相似,都是尽量使解最优化。贪心法是将解决问题的过程串联地分为很多步,在每一步尽量使解最优化。遗传算法是将解决问题的过程迭代地分为很多步,在每一代尽量使解原创 2012-03-22 16:13:19 · 1144 阅读 · 0 评论 -
快速排序
快速排序可以看成对冒泡排序的一种改进。基本思想是:通过一趟排序将待排序列分为两部分,其中一部分的值均比另一部分的值要小,然后分别对这两部分继续进行排序。 算法过程举例说明如下,假设输入为:8149635270 (1) 用三数中值分割法取一个pivot。从头、中间、尾取3个数分别为8, 6,原创 2012-04-23 20:30:56 · 493 阅读 · 0 评论 -
字符串反转
源代码如下:#include using std::cout;using std::endl;//xk> 字符串翻转voidrevertString(char * str, int N){ int i =0, j = N - 1; while(i < j){ str[i] ^= str[j] ^= str[i] ^= str[j]; // 这样写发生异常,因为字符串是常量原创 2012-04-21 14:39:39 · 937 阅读 · 2 评论 -
二分查找
二分查找是对已经排序好的序列进行查找。因为这个程序非常经典地简单又容易出错,所以在当着面试官纸上写程序的场合这个程序的命中率非常高。 源码如下:#include using std::cout;using std::endl;//xk> 二分查找//xk>--------------------------------------------------//原创 2012-04-21 14:13:39 · 605 阅读 · 0 评论 -
堆排序
//xk> 什么是堆? 堆的结构满足两点性质:1. 堆是一棵完全二叉树。2. 任意节点的值小于它的所有后代。 性质2又称为堆序(heap order)性。节点值小于后代的堆即为小根堆,显然其根节点的值是最小的。相对地有大根堆。小根堆常用于XXX,大根堆常用于XXX。 不要求堆是满二叉树。也不要求其节点左孩子的值小于右孩子,堆不必要是二叉排序树(原创 2012-06-27 16:47:39 · 1056 阅读 · 0 评论