我们在使用C++开发相关软件、实现一些算法的时候,不可避免的会使用到STL标准库,本文对这个标准库常用的几种数据结构和算法库进行了整理。代码样例来自HowieMen,感谢。
分类: 数据结构和算法
-
数据结构:树和二叉树
在数据结构中,存在着线性结构和非线性结构两种,而树型结构就是其中的一种非线性结构,最常用的有树和二叉树。树是一种以分支关系定义的层次结构,其实例广泛存在与人类的社会生活中的方方面面,比如社会组织机构中的层次关系等。在计算机领域中,树在编译程序、数据库系统中,也有着很重要的应用。
-
地图路由问题算法——Dijkstra算法
Dijkstra最短路径算法是图论中最经典的算法之一,这种算法广泛应用于地理信息系统(GIS),包括MapQuest和基于GPS的汽车导航系统。本文中将针对该问题,实现经典的Dijkstra最短路径算法,并对其进行优化。
-
C语言基于MPI并行计算矩阵的乘法
矩阵的计算是并行计算里的一个很重要的问题。矩阵是一种网格化的数据,是一组同类型数值的集合,矩阵的出现,使得代数系统更完善,对各种实际问题的求解产生了巨大的作用。但是其庞大的计算量往往令人生畏,稍微大一点的矩阵,计算就变得非常繁琐,不仅仅是人,而且串行计算的程序,也同样会变得非常缓慢。这时我们就需要并行计算来解决这些问题了。
本文使用分治思想,利用主从节点方式,实现了一个并行计算的矩阵相乘程序,并将结果跟串行程序做了对比,计算了其加速比。
-
几种排序算法的实现和性能比较
在各种各样的排序任务中,不同的算法有着不同的效果和性能,比如稳定性、时间开销、空间开销等。本文中实现了5种排序算法:
插入排序(Insertion Sort,IS)、
自顶向下归并排序(Top-down Mergesort,TDM)、
自底向上归并排序(Bottom-up Mergesort,BUM)、
随机快速排序(Random Quicksort,RQ)和
Dijktra 3路划分快速排序(Quicksortwith Dijkstra 3-way Partition,QD3P),
并且在同一台普通计算机上,针对不同输入规模的数据进行了测试,对比了上述排序算法的时间性能。 -
组合数学实现关于购票问题的求解以及多种算法实现的性能比较
【摘 要】程序设计中有一类问题是购票问题,在整钱找零钱时怎样的队伍排列可以使得售票处不会出现找不开零钱的局面。本文将采用五种算法分析这道题目,并对各种算法的效率加以比较。从中可以看出组合数学理论在算法优化方面起到的显著作用。