stl中有set用于匹配是否存在,内部利用rbtree机制,是一种高效算法
但在c语言环境下,stl是不能直接使用,因此需要用其他算法来代替,二分法也是一种快速排序方法,代码逻辑也比较简单。
由于项目中,会碰到协议的筛选,例如跟进协议ID筛选,然后需要继续处理;
此时由于前端输入是广播数据,往往大部分数据都是"不需要处理"的,如果不进行优化,此处效率的确低下.
本来没有这篇作业的,由于测试结果并不是set效率都高于二分法的
测试条件限制:
先看数据截图:
二分法数据测试
被测数组长度为 102

被测数组长度为 50

被测数组长度为 25

被测数组长度为 12

如果使用set
被测数组长度为 102

被测数组长度为 50
被测数组长度为 25

被测数组长度为 12

再来一张对比表格
| 数组长度 | set-count | set-find | 二分 |
| 102 | 58 | 58 | 197 |
| 50 | 54 | 55 | 102 |
| 25 | 46 | 49 | 57 |
| 20 | 48 | 48 | 40 |
| 12 | 39 | 41 | 22 |
结论: