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

题目:

随机产生 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++才这样写的,哈哈:) 我想一定会有很多人大骂我白痴的吧,哈哈哈哈~~哈哈哈哈,就当耳旁风,不听。:)

时间: 2024-09-20 17:13:46

比较数据排序前后的查找次数的相关文章

《算法基础:打开算法之门》一第3章 排序算法和查找算法

第3章 Algorithms Unlocked 排序算法和查找算法 在第2章中,我们看到了在数组上进行线性查找的三个算法.我们能做得更好吗?答案是:看情况.如果不清楚数组中的元素是否有序,我们是不可能做得更好的.在最坏情况下,我们必须查找数组的所有n个元素,因为如果在前n-1个元素中不能找到要找的值,那么要查找的元素可能在第n个位置上.因此,当我们不清楚数组中的元素是否有序时,我们不可能实现比Θ(n)更好的最坏情况运行时间. 然而,假定数组是以非递减顺序排序的,那么根据"非递减"的含义

sqlserver-sql 怎实现查询数据表内出现最多次数的数据

问题描述 sql 怎实现查询数据表内出现最多次数的数据 我这里有个停车的信息表tb_Parkinginformati ,里面有addtime这个字段,我想查出,在某个时间段内(2015/6/1-2015/7/1),车辆入场最多的一个日期 我要怎么写,求解答,实在找不到了 急. 使用的是sqlserver数据库 解决方案 select max(CIID) from tb_Parkinginformati where addtime >= 2015/6/1 and addtime <= 2015/

MapReduce初级案例——数据排序

" 数据排序"是许多实际任务执行时要完成的第一项工作,比如学生成绩评比. 数据建立索引等.这个实例和数据去重类似,都是先对原始数据进行初步处理,为进一步的数据操作打好基础.下面进入这个示例. 1 实例描述 对输入文件中数据进行排序. 输入文件中的每行内容均为一个数字, 即一个数据.要求在输出中每行有两个间隔的数字,其中, 第一个代表原始数据在原始数据集中的位次, 第二个代表原始数据. 样例输入: (1) file1: (2) file2: (3) file3: 样例输出: 2 设计思路

javascript table数据排序代码

数据排序听起来好像只能是php教程,asp教程,sql来实现,今天我们提供一个可以在客户端进行数据排序的js代码,有需要的朋友可以参考一下. function sortCells(event) { var obj = event.target; var count = 0; count是记录点击次数的,根据奇偶进行升序或降序 if(!obj.getAttribute("clickCount")){ obj.setAttribute("clickCount", 0);

如何实现XML+XSL+javascript数据排序

javascript|xml|排序|数据 如何实现XML+XSL+javascript数据排序 数据排序模版<?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/

数组数据排序的程序例子

数组数据排序的程序例子 <% ''*** build example array to show that this thing can sort ''*** alpha-numeric arrays Dim MyArray MyArray = Array(1,5,"shawn","says","hello"2m骺噃嶤123,12,98) MyArray = Sort(MyArray) For I = 0 to Ubound(MyArray

数据排序及如何动态排序

数据排序及如何动态排序 //Belltree//http://www.lurer.net/ //初学XML,错误之处多多,各路高手多多指正 在<xsl:for-each select="//item" order-by="text()">及<xsl:apply-templates select="//item"/>中都可以看到order-by属性,该属性可以对选出来的节点按照order-by的值进行排序. <sing

ASP.NET中实现DataGrid数据排序

asp.net|datagrid|排序|数据 Visual Studio .Net为编写WinForm程序(即:在Windows平台下运行的程序)所提供的DataGrid组件比起微软以往的各种开发环境中提供的DataGrid组件都要"高级"许多.其"高级"的地方就在于不需要再进行任何其他设置或编程,DataGrid就能够对其中的数据分别按照升.降序进行排列.这种"高级"功能给我们编程提供了许多方便.图01是在WinForm程序中的DataGrid

WPS中用COUNTIF函数来给数据排序

RANK函数常被用来给数据排序.但如果我们使用WPS Office 2003中的金山表格来排定数字大小名次的话,会发现在这个版本的金山表格中没有RANK函数. 那么,在没有RANK函数的情况下,如何给数字排定大小顺序呢?其实,我们可以使用COUNTIF函数来完成这个任务. 假定数字序列在H2:H20单元格.各数字的名次排在I2:I20单元格.那么点击I2单元格,输入如下公式:"=COUNTIF($G$2:$G$20,">"&G2)+1"(不含外层双引号