兄弟们帮忙想个算法,在存储过程中实现

一张表,ID字段,可以存储0~~8000的数字,但是存储的时候可以不连续,
比如:
ID
0
3
5
99
100
1000
5000
现在的问题是,根据已经存入ID字段的数字,将没有使用的数字算出来,而且要分段显示,
比如:
开始ID 结束ID
1 2
4 4
6 98
101 999
1001 4999
5001 8000
各位大拿有没有好一点的算法,
多谢多谢!!

so easy..
int[] ints = new int[8001] ;
#1遍历所有数字.按照下标放入ints 中设置为1

ints[0]=1
ints[3]=1
...

#2.遍历这个ints数组.一个开关程序.双向输出就可以了