wushimiang12面试题的总结(一)

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

看了wushimiang12的面试题,我把内容总结了一下,想再讨论讨论.  
  原帖:http://community.csdn.net/expert/topic/4114/4114705.xml?temp=.1520349  
  题目:  
  学生表   如下:  
  自动编号       学号       姓名   课程编号   课程名称   分数  
  1                 2005001     张三     0001             数学         69  
  2                 2005002     李四     0001             数学         89  
  3                 2005001     张三     0001             数学         69  
  ............................................  
  题目:(1)查询数学分数在表中第10名到第15名的学生信息  
            (2)删除除了自动编号不同,其他都相同的学生冗余信息  
            (3)查询各科成绩前3名的学生信息  
   
  现将整理出的第一题的解法拿出来讨论讨论

· 网友精彩回答:

发表者:mydefoliate

顶一下!  
  觉得这问题要考虑到各种特殊情况的话比较麻烦,就像如果没有10~15名,或者不止5人排在10~15名之间...

发表者:shyming

如果表数据较多,个人觉得效率方面应该是3最好,2,4次之,1的就最低了,理解如下:  
  1.效率最低.执行过程应该是:先从表中选出top   10并放入内存(遍历表一次,时间复杂度n),再选择top   5再遍历一次(时间复杂度1n),而且此次遍历时每一笔数据都要和缓冲池的top   10作id比较(时间复杂度10n)         --时间复杂度12n.      
  2.有创意,执行效率一般.遍历table   2次,时间复杂度应该是2n.  
  3.效率最高.遍历数据库一次,第二次在15列里选择5列,可以忽略,时间复杂度应该是1n.空间复杂度也比其他大不了多少.  
  4.时间复杂度略高于2,也是2n.  
  不知道大家怎么看  
   
 

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved