没有合适的资源?快使用搜索试试~ 我知道了~
c++常用算法模板库.doc
4星 · 超过85%的资源 需积分: 22 17 下载量 133 浏览量
2011-04-25
11:20:59
上传
评论
收藏 217KB DOC 举报
温馨提示
试读
54页
c++常用算法模板库.docc++常用算法模板库.docc++常用算法模板库.docc++常用算法模板库.doc
资源推荐
资源详情
资源评论
常用算法模板库(C++)
1 排序算法.................................................................................................................................................3
1.1 冒泡排序..........................................................................................................................................3
1.2 选择排序..........................................................................................................................................4
1.3 插入排序..........................................................................................................................................5
1.4 快速排序..........................................................................................................................................6
1.5 哈希排序..........................................................................................................................................8
2 数学问题.................................................................................................................................................9
2.1 求最大公约数最小公倍数..............................................................................................................9
2.2 求素数..............................................................................................................................................9
2.2.1
穷举法
......................................................................................................................................9
2.2.2
筛法
.........................................................................................................................................10
2.3 排列组合........................................................................................................................................11
2.3.1
排列数
.....................................................................................................................................11
2.3.2
组合数
.....................................................................................................................................11
2.3.3
全排列算法
............................................................................................................................12
2.3.4
从
n
个数中选
m
个的组合
....................................................................................................13
2.4 进制转换........................................................................................................................................14
2.4.1
十进制转
N
进制
....................................................................................................................14
2.4.2 N
进制转十进制
.....................................................................................................................15
3 查找.......................................................................................................................................................16
3.1 二分查找........................................................................................................................................16
4 栈...........................................................................................................................................................17
4.1 栈的定义........................................................................................................................................17
4.2 表达式求值....................................................................................................................................19
5 队列.......................................................................................................................................................22
5.1 队列的定义....................................................................................................................................22
6 串...........................................................................................................................................................25
6.1 基本操作........................................................................................................................................25
6.1.1
赋值
........................................................................................................................................25
6.1.2
比较大小(字典顺序)
........................................................................................................25
6.2 模式匹配........................................................................................................................................26
6.2.1
一般匹配算法
........................................................................................................................26
6.2.2 KMP
算法
...............................................................................................................................27
7 树...........................................................................................................................................................28
7.1 二叉树的定义................................................................................................................................28
1
7.2 根据先序序列和中序序列建立二叉树........................................................................................32
7.3 二叉排序树....................................................................................................................................33
7.4 建立哈夫曼树................................................................................................................................34
7.5 树的定义........................................................................................................................................35
8 图...........................................................................................................................................................40
8.1 图的定义........................................................................................................................................40
8.2 图的最短路径................................................................................................................................44
8.2.1 Dijkstra
算法
..........................................................................................................................44
8.2.2 Floyd
算法
..............................................................................................................................45
8.3 最小生成树....................................................................................................................................46
8.3.1 prim
算法
................................................................................................................................46
8.3.2 Kruskal
算法
...........................................................................................................................47
8.4 拓扑排序........................................................................................................................................48
8.5 关键路径........................................................................................................................................49
9 高精度计算...........................................................................................................................................51
9.1 加法................................................................................................................................................51
9.2 减法................................................................................................................................................52
9.3 乘法................................................................................................................................................53
2
1 排序算法
1.1 冒泡排序
/*
函数功能:对数组中的某一部分进行冒泡排序。
函数原形:void BubSort(DataType a[], int l, int r, bool Up=true);
参数:
DataType a[]:欲排序的数组;
int l:有序序列在数组中的起始位置;
int r:有序序列在数组中的结束位置;
bool Up:true 按升序排列,false 按降序排列。
返回值:无。
备注:无。
*/
template <typename DataType>
void BubSort(DataType a[], int l, int r, bool Up=true)
{
int i,j;
DataType k;
if (Up)
{
for (i=l;i<=r-1;i++)
for (j=r;j>=i+1;j--)
if (a[j-1]>a[j])
{
k=a[j-1];
a[j-1]=a[j];
a[j]=k;
}
}
else
for (i=l;i<=r-1;i++)
for (j=r;j>=i+1;j--)
if (a[j-1]<a[j])
3
{
k=a[j-1];
a[j-1]=a[j];
a[j]=k;
}
}
1.2 选择排序
/*
函数功能:对数组中的某一部分进行选择排序。
函数原形:void SelectSort(DataType a[], int l, int r, bool Up=true);
参数:
DataType a[]:欲排序的数组;
int l:有序序列在数组中的起始位置;
int r:有序序列在数组中的结束位置;
bool Up:true 按升序排列,false 按降序排列。
返回值:无。
备注:无。
*/
/*普通版*/
template <typename DataType>
void SelectSort(DataType a[], int l, int r, bool Up=true)
{
int i,j;
DataType k;
if (Up)
{
for (i=l;i<=r-1;i++)
for (j=i+1;j<=r;j++)
if (a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
else
for (i=l;i<=r-1;i++)
for (j=i+1;j<=r;j++)
if (a[i]<a[j])
4
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
/*优化版*/
template <typename DataType>
void SelectSort(DataType a[], int l, int r, bool Up=true)
{
int i,j,k;
DataType x;
if (Up)
{
for (i=l;i<=r-1;i++)
{
k=i;
for (j=i+1;j<=r;j++)
if (a[j]<a[k]) k=j;
x=a[i];
a[i]=a[k];
a[k]=x;
}
}
else
for (i=l;i<=r-1;i++)
{
k=i;
for (j=i+1;j<=r;j++)
if (a[j]>a[k]) k=j;
x=a[i];
a[i]=a[k];
a[k]=x;
}
}
1.3 插入排序
/*
函数功能:向有序数组中插如元素,并使插入新元素后仍然有序。
函数原形:void InsertSort(DataType s[], int &Count, DataType x, bool Up=true);
5
剩余53页未读,继续阅读
资源评论
- K992014-06-28都是常用算法,浅显
- 鬼头猫2013-02-06很好很实用,代码很详细,注解很全面,感谢分享
feixuezj
- 粉丝: 0
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功