网络编程
位置:首页>> 网络编程>> Asp编程>> asp分类算法要解决的问题(5)

asp分类算法要解决的问题(5)

  发布时间:2009-09-10 16:49:00 

标签:分类,树,算法

第四个问题

现在我们回头看看第四个问题:怎样得到某个分类下的所有产品。由于采用了位编码,现在问题变得很简单。我们很容易推算:某个产品属于某个类别的条件是Product.FatherID&(Catalog.ID的特征码)=Catalog.ID。其中“&”代表位与算法。这在SQL Server中是直接支持的。

举例来说:产品所属的类别为:1092787200,而当前类别为1092780032。当前类别对应的特征值为:4294950912,由于1092787200&4294950912=8537400,所以这个产品属于分类8537400。

我们前面已经给出了计算特征码的公式。特征码并不多,而且很容易计算,可以考虑在Global.asa中Application_OnStart时间触发时计算出来,存放在Application(“Mark”)数组中。

当然,有了特征码,我们还可以得到更加有效率的算法。我们知道,虽然我们采用了位编码,实际上还是一种顺序编码的方法。表现出第I级的分类编码肯定比第I+1级分类的编码要小。根据这个特点,我们还可以由FID得到两个特征码,其中一个是本级位特征码FID0,一个是上级位特征码FID1。而产品属于某个分类FID的充分必要条件是:

Product.FatherID>FID0 and Product.FatherID<FID1

下面的程序显示分类FID下的所有产品。由于数据表Product已经对FatherID进行索引,故查询速度极快:

<%

REM oConn---数据库连接,已经打开

REM FID---当前分类

REM FIDMark---特征值数组,典型的情况下为Application(“Mark”)

REM k---数组元素个数,也是分类的级数

Sub GetAllProduct(oConn,FID,FIDMark byref,k)

REM 根据FID计算出特征值FID0,FID1

for i=k to 1

if (FID and FIDMark = FID ) then exit

next


strSQL = "select Name from Product where FatherID>"FIDMark(i)&" and FatherID<"FIDMark(i-1)

set rsProduct=oConn.Execute(strSQL)%>

<UL><%

Do While Not rsProduct.Eof%>

<LI><%=rsProduct("Name")

Loop%>

</UL><%

rsProduct.Close

End Sub

%>

关于第5个问题、第6个问题,就留作习题吧。有了上面的位编码,一切都应该迎刃而解。

0
投稿

猜你喜欢

  • 网页设计遇到最大的麻烦之一莫过于网页对不同浏览器的兼容性问题了,因为IE 6.0 / IE 7.0 / firefox 2 / Opera
  • 这个是JS控制图片滚动的效果,当鼠标结果新闻标题时开始滚动到对应的图片,可以作为图片新闻。效果图:<!DOCTYPE HTML PUB
  • 内容摘要:一堆数据摆面前,数据背后有什么样的事情在发生,这些数据里面暗藏着什么样的用户需求,什么样的商业机会?看懂这些,将为未来产品设计的方
  • QL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这
  • 我在网站上设置了邮件列表功能,实现用户自动订阅和发送,但很多用户输入和提交的邮件地址格式都是无效的,无法处理。请问如何解决这一问题?&nbs
  • 说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 bo
  • 最近决定把MT的后台数据从Berkeley的文件DB转到MySQL。原因之一是使用关系数据库可以获得更多的灵活性,比如运行一条sql来变更
  • 如何远程注册DLL?试试下面的代码:<% Response.Buffer = True %&g
  •   ADO也提供更有效率方法来取得数据。GetRows 方法传回一个二维的数组变量,每一行对应Recordset中的一笔记录,且每
  • 近段时间看了一些论坛上面关于分页的ASP程序依然有许多的关注者,但里面只有代码,没有详细的解释,对于初学者来说,这样总是得不到真正的掌握,此
  • 在很多语言的学习中,“事件”都是一个比较难理解,但是又是一个很重要的概念。javascript中的事件处理也是一样,正因为有了事件处理,才会
  • CSS制作滑动折叠的文字效果,可以用于二级导航菜单的制作,不错的下拉菜单。<!DOCTYPE html PUBLIC "-/
  • 今天开发富媒体广告遇到的问题 用JS控制flash 只在IE平台下有效 费尽周折才找到兼容的解决方案方法如下:重点在于 object的id属
  • 很多人错误地认为ASP是简单、低效的代名词,认为ASP是低能的,不足挂齿的,也很简单,一学就会,一琢磨就精通。有人讲ASP不安全,写ASP的
  • 下面,我们就从当前时间来取得随机数,调用的时候用包含文件就可以了:<!--#INCLUDE VIRTUAL="/q
  • SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A')
  • 代码如下:'************************************ '截取文字长度函数,支持UT
  • 1、from子句组装来自不同数据源的数据;  2、where子句基于指定的条件对记录行进行筛选;  3、group&nb
  • 最近在为公司做一个门户网站,项目并不咋D,可规划却不小.在做的过程中就发现修改占了很大的工作量.于是就开始想了想如何使前端修改轻松一些.这个
  • 俺比较笨,对太专业的书一直不感冒,看了就想睡觉。最近李明同学传了本“大话设计模式”电子版。偶然翻了翻,感觉还满通俗的,正适合我这样的懒人学习
手机版 网络编程 asp之家 www.aspxhome.com