数据库里有100万个数字,如果连续10个数字出现近似值(这10个数字两两都近似或相等才算近似值),则记录这10数字的ID?
求大神们提供思路。。。。
我的想法是这样:
1.先将所有数字进行排序,放入数组中,此时得到一个有序的数字数组。
2.将100万个数字分成四个部分 备用,目的是提高计算速度,可以使用4个线程分别去计算
3.两个数字相似,前提条件是允许一个合理的误差值(比如说123.5和124.9 之间的误差为:1.4,我假设每个数字间的误差值为5的话,那么这2个数字是满足的) ,由于四个数组中的数字是有序的,只需要遍历一遍,前后元素进行减法运算,差值在误差值之内的,就记录下来
4.四个子的数组计算完成后,要注意下,要进行一次特殊处理,就是第一个数组的最后一个元素,与第二个数组的第一个元素,差值是否在误差值之内,在的话,就需要处理一下了(因为是分成了四个子数组,不分开的话,就没这么麻烦了,呵呵,但是计算速度就快一些了,牺牲代码复杂度换性能)
5.合并你所有记录下来的符合要求的数字,就是你所要的数字了