算法
阿修罗it
科学是神圣的
展开
-
程序员必须知道的10大基础实用算法及其讲解
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divideandconquer)策略来把一个串转载 2015-09-18 10:22:52 · 398 阅读 · 0 评论 -
单链表反转
从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。Node* ReverseList(Node* head) { Node *p,*q; p=head->next; while(p->next!=NULL) //在这个循环过程中p所指的元素一直是不变的转载 2015-09-23 17:34:38 · 299 阅读 · 0 评论 -
输出全排列--循环+递归
#include #include using std::cout; using std::cin; using std::endl; using std::string; void PrintOrder(const string& pre,const string& ext) { if (ext.length()==1)转载 2016-03-16 14:38:30 · 884 阅读 · 0 评论 -
深入理解KMP算法
2. 暴力匹配算法 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]! = P[j]),令i = i - (j转载 2016-03-14 09:40:52 · 291 阅读 · 0 评论