经典算法
文章平均质量分 79
乐哉悠哉
夏虫不可语冰者,语于夏花
展开
-
算法导论 - 归并排序的 C 语言实现
归并排序是 Divide-and-Conquer 编程思想一个简单例子,其逻辑核心主要有以下几点。(1) 将两个有序数列合并的时间复杂度为 O(n),参见函数 void merge(int *src, int st, int md, int ed, int *sorted);(2) 数列中只有一个数的时候,数列处于有序状态。下面是归并排序的示例代码。#include #include原创 2015-01-27 19:13:55 · 979 阅读 · 0 评论 -
C++ AVL平衡树 模板
在上篇博文中的二叉搜索树的基础上(无实际联系,只是当时开发的时候参考),实现了AVL平衡树,完美地实现了其中较为困难的旋转操作。使用请注明出处,谢谢。源代码如下:#pragma once//#include "STree.h"template class AVLTree;template class AVLTree_iterator;template class AVLTree原创 2012-10-31 19:54:14 · 1894 阅读 · 0 评论 -
C++ 二叉搜索树 模板
以前写的二叉搜索树,其中节点是类模板,可对任何实现了比较大小的数据的插入、查找及删除操作。并使用Traits技术实现了使用迭代器对操作数据,移植性好,效率较高。使用请注明出处,谢谢。源码贴出如下:#pragma once#include #include #include using namespace std;template class STree;template原创 2012-10-31 19:49:32 · 1374 阅读 · 0 评论 -
八皇后全部解及指定皇后位置求解
编译器 VS2010编写者 冬虫2012.2.29这里借助STL的向量,通过封装类Board(棋盘)实现实现了八皇后的求解问题。1、提供了两种方式求解(1)求出八皇后的所有解(int FindAllSolution(); 共92种);(2)指定第一个皇后所在位置求解( bool Queens(int row, int col); );2、使用接口函数void Draw();在屏原创 2012-03-01 09:19:55 · 1682 阅读 · 0 评论 -
算法导论 - 快速排序的 C 语言实现
在实践中,需要对大量数据排序时,快速排序常常是最佳的选择。快速排序是基于分治思想的一种算法,和归并排序有相似之处。在最坏情况下,快速排序的时间复杂度是O( n^2 );平均情况下,快速排序的时间复杂度是 O( n * lg n)。我们知道归并排序的时间复杂度是O( n * lg n),那么为什么在实践中会发现快速排序常常要优于归并排序呢?通过分析快速算法,我们可以发现最坏情况出现的概率极为小;而在原创 2015-03-24 15:54:37 · 1043 阅读 · 0 评论