当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 比较数据排序前后的查找次数

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 比较数据排序前后的查找次数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 54 ::
收藏到网摘: n/a

比较数据排序前后的查找次数
作者:宋科
作者主页:kesongemini.diy.163.com

下载本文源代码

题目:
随机产生 1000 个 1-2000 以内的互不相同的整数,
1)存储于一个数组中(不排序)
2)存储于一个数组中(排序)
分别应用查找运算,要求输入一个查找元素,输出各自的查找比较次数。

要求:
1)查找元素 2
2)查找元素 1000


目的:
练习一下C++的神仙眷侣所提倡的用“类”来表达观点的编程风格。

用类来思考:

查找(CFind)是一个概念,作用于特定的数据(CData),因为数据有各种不同的特性,有排序了的(CDataSorted),和没有排序过的(CDataChaos),对于不同特性的数据,应该应用不同的查找方法, 对于排序过的数据(CDataSorted),应该使用一种查找方法(CFindBinarySearch), 对于没有排序过的数据(CDataChaos),应该使用另一种查找方法(CFindWorker), 呵呵,所以产生了如下的类图:

 +----------+ +-------+ + CFind +<>-------------------------->+ CData + +-+------+-+ +---+---+ ^ ^ ^ ^ ^ +--------+------+ ^ ^ ^ ^ +-----------+-+ +-+-----------------+ +-----+-------+ +---+--------+ + CFindWorker + + CFindBinarySearch + + CDataSorted + + CDataChaos + +-------------+ +-------------------+ +-------------+ +------------+
这样的话,用户就可以通过派生CData类来加入新的存储格式的数据,通过派生CFind类来加入新的查找方法了, 不过,一般来说,查找方法都是和数据存储方式紧密耦合的,所以,嘿嘿嘿,..., 请注意我的目的呀,我只是为了练习C++才这样写的,哈哈:) 我想一定会有很多人大骂我白痴的吧,哈哈哈哈~~哈哈哈哈,就当耳旁风,不听。:)

数据的基类:(每个类的实现请在本文提供的源代码中查找)

class CData{public:	CData();	CData(int iNum, int iMax); // generate the data : _v	virtual ~CData(){};	CData(const CData& rhs);	void get_data(vector& v);protected:	vector _v;private:	CData& operator=(const CData& rhs);	const int _iMin;};
排序数据类:
class CDataSorted : public CData{public:	CDataSorted(CData rhs);	virtual ~CDataSorted(){};private:	CDataSorted();	CDataSorted& operator=(const CDataSorted& rhs);};
原始数据类:
class CDataChaos : public CData{public:	CDataChaos(CData rhs);	virtual ~CDataChaos(){};private:	CDataChaos();	CDataChaos& operator=(const CDataChaos& rhs);};
查找的基类:
class CFind{public:	CFind(const CData& data);	virtual ~CFind();	virtual bool to_find(int elem, int& num);protected:	CData* _pdata;private:	CFind& o