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

2016-01-29 12:15 7 1 收藏

比较数据排序前后的查找次数,比较数据排序前后的查找次数

【 tulaoshi.com - C语言心得技巧 】

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

下载本文源代码

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

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


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

用类来思考:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

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

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
class CData{public:CData();CData(int iNum, int iMax); // generate the data : _vvirtual ~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
                        

来源:http://www.tulaoshi.com/n/20160129/1485270.html

延伸阅读
标签: excel
excel如何对数据排序   1、点击菜单栏的数据,鼠标点击一下成绩表中任意一个单元格。 2、在功能区找到排序功能并进行点击。 3、选中对话框的数据包含标题,点确定,即排名结束。 排tulaoShi.com序后的结果如下: Excel2010如何自定义单元格序列   1、打开Excel,单击文件,在弹出的窗口中点...
酷狗音乐本地歌曲如何按播放次数排序?   酷狗音乐本地歌曲如何按播放次数排序?大家在用音乐播放器听歌的时候,歌曲的排序无非就是按大小、拼音或时间这样排,那么,你知道酷狗音乐最新加入的播放次数排序吗?不知道就来看看小编的这篇教程,让小编来教你酷狗音乐本地歌曲如何按播放次数排序。 1)打开手机酷狗音乐,点击; ...
标签: 电脑入门
MAC用户喜欢在重装系统前使用Transmit备份一些电脑中重要的数据,不过在重装完系统之后,却又找不到Transmit将数据备份在哪里。对于这个问题,我们该怎么解决呢? 解决方法: 1. 打开用户 2. 点击进入资源库 3. 点击进入Caches 4. 点击进入Metadata 5. 找到Transmit 全部拷贝备份,下次系统重装后拷贝进去就可以。 这就是在MAC系...
标签: 电脑入门
对Excel数据进行排序是数据分析不可缺少的组成部分。您可能需要执行以下操作:将名称列表按字母顺序排列;按从高到低的顺序编制产品存货水 平列表,按颜色或图标对行进行排序。对数据进行排序有助于快速直观地显示数据并更好地理解数据,有助于组织并查找所需数据,有助于最终做出更有效的决策。 注释 若要查找某个单元格区域或某个表中的上...
标签: 电脑入门
Excel2010对表格中的学生成绩进行降序排列如下图: 排序方法: 1.点击菜单栏的数据,如下图: 2.鼠标点击一下成绩表中任意一个单元格 3.点击功能区的排序 4.选中对话框的数据包含标题 5.点确定,即排名结束,结果如下:

经验教程

183

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部