最近在想公交查询的站站算法问题,想法是以数据存储方式查询. 站站查询无非包括直达和转车,转车又分为一转和二转(三转太复杂也没太大需求,建议直接打的).
直达:直接取数据库中始发站和终点站的相同车次.
一转:取经始发站的车次对应的所有站点和经终点站的车次对应的所有站点与(and)运算,得中转站.
二转:取经始发站的车次对应的所有站点记录集为A;经终点站的车次对应的所有站点记录集为B;取经始发站的车次对应的所有站点,过这些站点的所有车次和经终点站的车次对应的所有站点,过这些站点的所有车次与运算,取相同车次的站点记录集为C;A和B与运算得一转站,A和C与运算得二转站.
如:有公交站a.b.c.d.e.f,a(车次901.1),b(1.11),c(901,1),d(11,2),e(848.2),f(2).
想要从a到f站,A记录集中取得站点a.b.c,B记录集中取得站点b.d,C记录集中取得站点d.e.f,A与C得b一转站,B与C得d二转站.