吵吵   2015-06-22  阅读:1,311

在涉及到搜索选择的地方,调出字典和匹配条目是一个基本的循环算法,然而却值得研究一下。

幻想你是一个忙的要疯的医生,一个病人在排队了N小时之后,终于坐在了你的面前。病人一边可怜的诉说他的病情,一边愤怒的诉说他的就医体验:“你们医院怎么这么差呢,病人要排这么长的队,你们不会增加一些医生么… …”


作为一名医生,你早已经厌倦了如此的抱怨。医生天生的理性和冷静,会让你直接忽略掉这些东西。假如不忽略的话,病人就会把他的病情和医院的服务联系到一起,并非要扯出一个逻辑来:“我都病成这样子了,到医院看病,还需要排这么长的队,你们医院到底有没有良心?”,如此,医生大概天生就是欠病人的。

腰痛?查个尿常规吧,你打开HIS系统,输入一个“尿”字,匹配出一堆的项目,你扫描了半天,发现没有尿常规,那什么“尿”蛋白电泳却跑到前面来了,无奈,你只得再输入一个“常”,这次终于能找到尿常规的项目了。打印出申请单来,患者不乐意了,为什么上次我做的尿常规是10块,这次变成32块了?你仔细一看,TMD的系统又把贵的放在前面了!

系统就不能变的智能一点?把我使用频率高的项目排到最前面来?

搜索与排序

对,我们绝对是要做个事情,而且这个事情,在诸多的下拉选择中都可应用的到,这是一个几乎通用的需求,而且对改善用户体验有着极大的作用。

假设字典足够小,比如就仅仅只是全中国的那几个省份,凭现在的计算机的功力,这仅仅是一个“然并卵”的事情。

但是如果字典大了呢?大到开始对一些循环算法产生人能意识到的延迟呢?这绝对值得仔细考虑。

排序因为到执行多次的循环,基本上如冒泡排序将会造成O(n2)的算法复杂度。搜索我们不论搜索函数的算法,仅仅进行循环,然后匹配,造成O(n)的算法复杂度。

从这点上来看,我们先搜索,再排序,似乎会更快一点。

你是如果字典是重复使用的呢?比如我输入”尿”和“尿常规”,实际上搜索的是同一个字典,因此如果重复利用的话,先排序,之后再输入,就只要搜索了,排序就不用再管了。

涉及到多字符的输入的时候,还是先排序,再搜索吧。

让你的智能联想输入框再智能一点,下次记得做高频排序哦!

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

7条回应:“先排序还是先搜索”

  1. 火锅桌椅说道:

    生活就是不断分享不断成长

  2. 手机回收说道:

    配图不错

  3. 大城小我说道:

    有点意思i

  4. 黄色网站说道:

    huangse.banshouseo.com黄色网站

  5. 香茹说道:

    [内牛满面]

  6. 家具电商说道:

    [不关我事] 支撑老大!新手进来多多学习!

发表评论

电子邮件地址不会被公开。 必填项已用*标注