算法
yangalbert
这个作者很懒,什么都没留下…
展开
-
Fibonacci数列的递归与非递归实现
Fibonacci(斐波那契)数列定义:(1)递归实现思想简单,无需赘述,实现如下:// 递归方法复杂度O(2^n),计算到n=41已达到计算机的极限int F( int n ){ if ( n <= 0 ) return 1; else if ( n == 1 ) return 1; else return F(n-1)+F(n-2);原创 2012-03-23 11:24:29 · 1353 阅读 · 0 评论 -
[C++]string到double,float,int的转换
// 为实现模板函数分离编译,虚实例化模板函数,使用export无效,当前编译器并未实现export//export template Type string2num(const std::string& s){ std::istringstream is(s); Type num; is >> num; return num;}template dou原创 2013-10-06 18:02:36 · 2233 阅读 · 0 评论 -
C++字符串切分: split实现
std::vector split(const std::string& s, const std::string& delim){ std::vector elems; size_t pos = 0; size_t len = s.length(); size_t delim_len = delim.length(); if (delim_len ==原创 2013-10-06 18:00:27 · 9566 阅读 · 2 评论 -
暴雪Hash表实现与测试
StringHash.H#ifndef __STRING_HASH_H__#define __STRING_HASH_H__// Definition of MPQHashTablestruct MPQHashTable{ long nHashA; long nHashB; bool bExists;};#define CRYPT_TABLE_LENGTH (256原创 2012-09-19 16:38:24 · 1730 阅读 · 0 评论 -
KMP字符串匹配算法
记号约定及符号说明:F :fullString,S:subStringn = length(F)m = length(S)1. 朴素的字符串匹配算法朴素的模式匹配的基本思想为:从主串F的第一个字符开始和S的第一个字符比较,如果相同则比较两者的后续字符,否则从F的第二个字符开始重新和S的第一个字符比较,以此类推,直到S和F的一个子串相等,则称为匹配成功,否则匹配失败。原创 2012-09-27 21:33:53 · 657 阅读 · 0 评论 -
堆排序
// 堆排序void percolateDown(int* A, int i, int N);void HeapSort(int *A, int Len){ // build heap for ( int i = Len / 2; i >= 0; --i ) { percolateDown(A, i, Len-1); } // move max to the end for原创 2012-09-04 14:15:11 · 570 阅读 · 0 评论 -
归并排序:数组和单链表实现
1. 数组的归并排序// 归并排序的递归调用void mergeSort(int* A, int beg, int end, int* B){ if ( beg >= end ) { return; } int mid = (beg + end ) / 2; mergeSort( A, beg, mid, B); mergeSort( A, mid+1, end, B)原创 2012-09-03 13:29:54 · 3739 阅读 · 0 评论 -
单链表快速排序算法实现
单链表结构:typedef int ElemType;typedef struct ListNode* List;struct ListNode{ ElemType key List next;};实现代码如下:void QuickSort( List head, List tail ){ if ( head->next == tail || he原创 2012-05-17 20:39:13 · 7823 阅读 · 8 评论 -
若干常用(内部)排序算法的总结
实现代码中会出现宏typedef int DataType;#define SWAP( A, B ) {DataType x = A; A = B; B = x;}1. 插入排序算法类似数学归纳法的描述:① 起始时A[beg]的元素位置不变(此时A[beg]这一个元素已经有序)② 假设A[beg]..A[i](beg将①②结合可得到插入排序的伪代码: f原创 2012-05-06 11:14:39 · 997 阅读 · 0 评论 -
快速排序算法的递归与非递归实现(C/C++)
#define SWAP( x, y ) { int t=x; x=y; y=t; }// 快速排序算法的递归算法 void quicksort1( int*A, int beg, int end ){ int i, j; int p; if ( beg >= end ) { return; } i = beg;原创 2012-05-06 10:12:18 · 5675 阅读 · 1 评论 -
牛顿下山法求解非线性方程(组)(C实现)
1、算法描述(1)符号说明与基本假设对于非线性方程组: (1)引入向量:可将(1)式改写为 (2)通常考虑方程(2)只有唯一解的情形。(2)牛顿原创 2012-04-17 18:25:58 · 9834 阅读 · 2 评论 -
二叉查找树实现(C语言版本)
SearchTree.h 文件#ifndef __Search_TREE_H__#define __Search_TREE_H__// 二叉查找树#include "DataType.h"typedef struct SearchTreeNode* SearchTreePt;typedef struct SearchTreeNode SearchTree;struct S原创 2012-04-04 20:28:32 · 896 阅读 · 1 评论 -
AVL平衡二叉查找树实现(C语言版本)
AVT树是每个节点的左子树和右子树的高度最多差 1 的二叉查找树。(1)AVLTree.h 文件#ifndef __AVL_TREE_H__#define __AVL_TREE_H__// AVL Tree: Adelson-Vlskii and Landis// 带有平衡条件的二叉查找树// AVT树是每个节点的左子树和右子树的高度最多差 1 的二叉查找树#includ原创 2012-04-04 20:34:55 · 1093 阅读 · 0 评论 -
四叉树递归遍历叶节点并输出至数组
#include #include #include #define CHILD_NUM 4typedef int Datatype; // 节点数据类型typedef struct QuadTree* ChildType; // 指向孩子节点指针int max_leaf_num = 1; // 最大叶节点个数原创 2012-03-29 00:14:10 · 4611 阅读 · 0 评论 -
快速排序与快速选择算法
一、快速排序(1) 基本思想(2) C实现// 快速排序, 平均时间复杂度O(NlogN)void quickSort( DataType* A, int beg, int end ){ int i, j; DataType pivot = A[beg]; if ( beg >= end ) return; // 递归边界 i = beg; j = end+原创 2012-03-26 14:18:59 · 9202 阅读 · 0 评论 -
并查集(不相交集)C++实现
并查集类申明:disjoinset.h文件#ifndef __DIS_JOIN_SET_H__#define __DIS_JOIN_SET_H__#include #include class disjoinset{public: // 构造函数 explicit disjoinset(int n); // find操作 int find(int x) co原创 2013-10-06 17:58:49 · 2993 阅读 · 0 评论