博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两种查找算法的比较
阅读量:7075 次
发布时间:2019-06-28

本文共 1772 字,大约阅读时间需要 5 分钟。

1、普通查找:双层循环遍历,第二层循环中找到即break,查找时间复杂度O(M*N/2)

List
cameraList = new List
();List
cameraIdList = dataIds.Split(',').ToList();List
oldList = this.cameraList.Cameras.ToList();for (int i = 0; i < cameraIdList.Count; i++){ string cameraId = cameraIdList[i]; for (int j = 0; j < _cameraList.Count; j++) { PtCameraInfo camera = _cameraList[j]; if (camera.ID == cameraId && !oldList.Exists(a => a.ID == camera.ID)) { cameraList.Add(camera); break; } }}
View Code

2、高效查找:排序虽然费时,但数量级低,所以耗时很低,排序时间复杂度O(M*logM+N*logN),查找过程也是双层循环,但第二层循环比较省时,查找时间复杂度O(M*logN),总的时间复杂度:O(M*logM+N*logN+M*logN)

List
cameraList = new List
();List
cameraIdList = dataIds.Split(',').ToList();List
oldList = this.cameraList.Cameras.ToList();//排序this._cameraList.Sort(new Comparison
((a, b) =>{ return string.Compare(a.ID.PadLeft(36, '0'), b.ID.PadLeft(36, '0'));}));cameraIdList.Sort((a, b) =>{ return string.Compare(a.PadLeft(36, '0'), b.PadLeft(36, '0'));});//高效查找int k = 0;for (int i = 0; i < cameraIdList.Count; i++){ string cameraId = cameraIdList[i]; for (int j = k; j < _cameraList.Count; j++) { PtCameraInfo camera = _cameraList[j]; if (camera.ID == cameraId && !oldList.Exists(a => a.ID == camera.ID)) { cameraList.Add(camera); k = j; break; } }}
View Code

说明:cameraList的数量级是2万,当cameraIdList数量从1到大约1000时,高效查找耗时始终是0.1秒多左右,而普通查找,当cameraIdList数量很少时,很快,0.05秒,当cameraIdList数量接近1000时,大约2秒。

转载于:https://www.cnblogs.com/s0611163/p/10694987.html

你可能感兴趣的文章
获取lamp编译参数
查看>>
Linux系统下启动MySQL的命令及相关知识
查看>>
Shell理论学习(一)
查看>>
phpcms开发之模板语法规则
查看>>
CST UTC
查看>>
因为看见,所以发现:QBotVariant谢绝落幕
查看>>
我的友情链接
查看>>
让Apache支持shtml实现include文件解析的配置方法
查看>>
软件测试学习:检查产品说明书
查看>>
linux 防火墙
查看>>
mysql事务提交模式
查看>>
那些年我们学Flask-SQLAlchemy,实现数据库操作,分页等功能
查看>>
延迟加载JavaScript
查看>>
Ubuntu 安装chrome
查看>>
hive中表状态数据的获取
查看>>
word search 此题若会,所有dfs矩阵全会
查看>>
ASP.NET Cache的一些总结2
查看>>
Pav OpenCart 商城自适应主题模板 ABC-0006-03
查看>>
×××服务让用户看得见
查看>>
Ceisum官方教程2 -- 项目实例(workshop)
查看>>