我现在有一个表,里面有很多数据,我现在接收进来一个数据(int型),就进行比对,如果表里面有这个数据,则我需要把他改变使他不同,我原来想的是在后面加一个随机数,可是数据太多,很快这个数据的位数就变的很大,所以在这求一个比较好用的算法
------解决思路----------------------
你是怕定义的int不够大,终会超出它的表示范围是吧,
这个问题有多种解决办法的,可以分表,也可将匹配键改其它类型(字符串),怕麻烦的话,看下面
表里面面不是有自增长的类型么,这个应该不超出你的使用范围的吧
------解决思路----------------------
根据你的描述.. 你的这个int值的数据, 好像不是很重要..但是又要确保唯一性.
一般的思路就是设置自增长列. 数据库里可以直接设置. 代码的话, 需要自己维护一个自增长的值.
如果非要插入的时候再来看是否有重复的, 我想到的就是 维护一个很大的 list .. 里面装着可用的int值... 当你插入的时候, 就直接从里取一个出来..(感觉和自增长差不多) 或者 你先在list里面查找是否有你要插入的这个值, 有, 表示可用, 直接移除, 直接用. 没有表示不可用, 再去list里取一个用..... 但是感觉需要对这个list进行维护..比较麻烦..没有自增长那个好用...
------解决思路----------------------
你可以构建一颗树,每次提取出一个数据,那么往树中添加一个节点,在添加的时候去和节点的数据比较大小(如左边小又边大),然后将该数据存放到应该的位置,如果这个数已经是某一个节点了存在了,那么就将这个数+1,然后继续找位置,放到对应的节点下面,这样就好了。
------解决思路----------------------
,如果表里面有这个数据,则我需要把他改变使他不同,我原来想的是在后面加一个随机数,
为什么要加一个随机数呢,如果表里面有这个数,则用目前表里面的最大数+1不就好了。效果其实就跟上面几位说的自增效果差不多,只是不需要对当前的架构做什么改变。