发表时间:2008-11-05
这个题目或许还有些扩展,就是在url的匹配上,算法书上应该有大量的关于字符串匹配的例子,不过偶直接用编程语言提供的api,这方面没有深究了……
|
|
发表时间:2008-11-05
插表?????
我记得我们这oracle插一句的时间大约是10ms左右.....5分钟跑不完1千万吧...... 当然 我觉得最方便的也是插表... 就是时间上.......... ............. 我好像看错了......不是每一条都插....... 那该怎么判断重复?????? 这个好像是最关键的 .............. string的排序 用的应该是compareTo 他本身就是按位比了....而且排一次的话 应该便历不只一遍.... 排完之后 只要再遍一遍就可以了.....应该没问题吧.......... |
|
发表时间:2008-11-05
ddandyy 写道
插表?????
我记得我们这oracle插一句的时间大约是10ms左右.....5分钟跑不完1千万吧...... 当然 我觉得最方便的也是插表... 就是时间上.......... ............. 我好像看错了......不是每一条都插....... 那该怎么判断重复?????? 这个好像是最关键的 .............. string的排序 用的应该是compareTo 他本身就是按位比了....而且排一次的话 应该便历不只一遍.... 排完之后 只要再遍一遍就可以了.....应该没问题吧..........
在遍历短信文件的时候,就会把重复的短信过滤掉了,插入排序是一种较好的办法,这样一边遍历,一边排序,不需要遍历2次,如你的方法在也蛮好,简单明了,遍历完之后,直接快速排序。
反正关于字符串的匹配偶就直接用内置的api,自己写的不见得比它的好:) |
|
发表时间:2008-11-05
下一站,火星 写道 其实这个题目跟偶的一次c语言课程设计的题目雷同。
偶的思路是: 先建一个struct,里面存短信,并且内置一个计数器(int型)。 再建一个struct链表,用于存取排序后的短信列表。 下面开始读取整个短信文件(这一步省不掉的,算法复杂度是n), 遇到重复的短信,那么该短信的计数器加一并且跳过,在将该利用插入排序算法将该短信节点按计数器大小插入到struct链表中,读取文件结束后,就取链表的前十位,ok,结束! 比较2个字符串这件事,很多次比较,对于1000w级别的数据,不可能用这种方法。 |
|
发表时间:2008-11-05
下一站,火星 写道
ddandyy 写道
插表?????
我记得我们这oracle插一句的时间大约是10ms左右.....5分钟跑不完1千万吧...... 当然 我觉得最方便的也是插表... 就是时间上.......... ............. 我好像看错了......不是每一条都插....... 那该怎么判断重复?????? 这个好像是最关键的 .............. string的排序 用的应该是compareTo 他本身就是按位比了....而且排一次的话 应该便历不只一遍.... 排完之后 只要再遍一遍就可以了.....应该没问题吧..........
在遍历短信文件的时候,就会把重复的短信过滤掉了,插入排序是一种较好的办法,这样一边遍历,一边排序,不需要遍历2次,如你的方法在也蛮好,简单明了,遍历完之后,直接快速排序。
反正关于字符串的匹配偶就直接用内置的api,自己写的不见得比它的好:) api要是那么好,google,baidu就不用花大价钱雇人了。 |
|
发表时间:2008-11-05
bcccs 写道
下一站,火星 写道
其实这个题目跟偶的一次c语言课程设计的题目雷同。
偶的思路是: 先建一个struct,里面存短信,并且内置一个计数器(int型)。 再建一个struct链表,用于存取排序后的短信列表。 下面开始读取整个短信文件(这一步省不掉的,算法复杂度是n), 遇到重复的短信,那么该短信的计数器加一并且跳过,在将该利用插入排序算法将该短信节点按计数器大小插入到struct链表中,读取文件结束后,就取链表的前十位,ok,结束! 比较2个字符串这件事,很多次比较,对于1000w级别的数据,不可能用这种方法。
不是和所有的短信比,只是把当前读取的短信和已排序的链表中的短信比!遍历一下该链表,如果不存在直接插到表尾,如果存在直接把该链表节点的计数器加一!
那你说说对于1000w级别的数据,有啥好办法没? |
|
发表时间:2008-11-05
bcccs 写道
下一站,火星 写道
ddandyy 写道
插表?????
我记得我们这oracle插一句的时间大约是10ms左右.....5分钟跑不完1千万吧...... 当然 我觉得最方便的也是插表... 就是时间上.......... ............. 我好像看错了......不是每一条都插....... 那该怎么判断重复?????? 这个好像是最关键的 .............. string的排序 用的应该是compareTo 他本身就是按位比了....而且排一次的话 应该便历不只一遍.... 排完之后 只要再遍一遍就可以了.....应该没问题吧..........
在遍历短信文件的时候,就会把重复的短信过滤掉了,插入排序是一种较好的办法,这样一边遍历,一边排序,不需要遍历2次,如你的方法在也蛮好,简单明了,遍历完之后,直接快速排序。
反正关于字符串的匹配偶就直接用内置的api,自己写的不见得比它的好:) api要是那么好,google,baidu就不用花大价钱雇人了。
google,baidu花大价钱雇人是做什么的?你具体说说嘛?内置的api你爱用不用,和我没有一毛钱的关系! |
|
发表时间:2008-11-05
下一站,火星 写道
bcccs 写道
下一站,火星 写道
ddandyy 写道
插表?????
我记得我们这oracle插一句的时间大约是10ms左右.....5分钟跑不完1千万吧...... 当然 我觉得最方便的也是插表... 就是时间上.......... ............. 我好像看错了......不是每一条都插....... 那该怎么判断重复?????? 这个好像是最关键的 .............. string的排序 用的应该是compareTo 他本身就是按位比了....而且排一次的话 应该便历不只一遍.... 排完之后 只要再遍一遍就可以了.....应该没问题吧..........
在遍历短信文件的时候,就会把重复的短信过滤掉了,插入排序是一种较好的办法,这样一边遍历,一边排序,不需要遍历2次,如你的方法在也蛮好,简单明了,遍历完之后,直接快速排序。
反正关于字符串的匹配偶就直接用内置的api,自己写的不见得比它的好:) api要是那么好,google,baidu就不用花大价钱雇人了。
google,baidu花大价钱雇人是做什么的?你具体说说嘛?内置的api你爱用不用,和我没有一毛钱的关系! 吵架没有意义,对于海量级数据,为了性能可以牺牲很多东西,所有的函数都是定制的。 而且,我前面给出解法了,比你的做法快多多了。 |
|
发表时间:2008-11-05
bcccs 写道
下一站,火星 写道
bcccs 写道
下一站,火星 写道
ddandyy 写道
插表?????
我记得我们这oracle插一句的时间大约是10ms左右.....5分钟跑不完1千万吧...... 当然 我觉得最方便的也是插表... 就是时间上.......... ............. 我好像看错了......不是每一条都插....... 那该怎么判断重复?????? 这个好像是最关键的 .............. string的排序 用的应该是compareTo 他本身就是按位比了....而且排一次的话 应该便历不只一遍.... 排完之后 只要再遍一遍就可以了.....应该没问题吧..........
在遍历短信文件的时候,就会把重复的短信过滤掉了,插入排序是一种较好的办法,这样一边遍历,一边排序,不需要遍历2次,如你的方法在也蛮好,简单明了,遍历完之后,直接快速排序。
反正关于字符串的匹配偶就直接用内置的api,自己写的不见得比它的好:) api要是那么好,google,baidu就不用花大价钱雇人了。
google,baidu花大价钱雇人是做什么的?你具体说说嘛?内置的api你爱用不用,和我没有一毛钱的关系! 吵架没有意义,对于海量级数据,为了性能可以牺牲很多东西,所有的函数都是定制的。 而且,我前面给出解法了,比你的做法快多多了。
你的方法是递归,递归的效率是非常低下的!
偶个人觉得你的方法是自找麻烦,你的方法无非是在字符串匹配上做了点文章,那么你最好可以提供你的方法比内置的字符串匹配快在什么地方的依据?
|
|
发表时间:2008-11-05
ddandyy 写道 重复的意思应该就是两条完全一样吧.......
用string.equalus不就可以了么.... 排完序之后再便历一遍就可以了吧.......... 你想把人家的服务器搞死呵呵,还是用hash来做合适 |