一种基于随机序列排序算法的日常紧急求助方法与流程

文档序号:11387591阅读:185来源:国知局
一种基于随机序列排序算法的日常紧急求助方法与流程
本发明涉及日常救助领域,更具体地,涉及一种基于随机序列排序算法的日常紧急求助方法。
背景技术
:现代社会越来越被称为“风险社会”,风险社会是一个大数据社会。在全球化发展背景下,由于人类实践所导致的全球性风险占据主导地位成为当代社会发展阶段的一大特征。现代性的一个明显特征是,社会变迁的步伐加快、范围扩大和空前的深刻性。这种对社会生活和自然的干预范围与深度的空前扩大,新的需要越来越多,新的问题也不断涌现。在这样的社会里,满足需要的方法会引出新的需要,解决问题的方法会引出更多的问题。在现实意义上,风险社会的结构不是由阶级、阶层等要素组成的,而是由个人行为主体构成的。也就是说风险社会的秩序并不是等级式的、垂直的,而是网络型的、平面扩展的,每个个体在风险社会中都是“平等主义者”。风险作为一种心理认知的结果,风险社会概念的出现体现了人类对风险认识的加深。人们认识到在风险社会中,本来用来解决问题的手段方法也有可能会引起新的问题带来新的风险。风险并不是有序的排列,而是呈现一种横向分布的无结构状态,其产生与传播越来越不依靠程序性的规则和规范。同时也意识到在这种情况下专业知识的局限性。另外,风险意识本身也成为一种风险:风险意识的分布趋于均匀,许多风险被广大公众所了解后反而变得熟视无睹。因此而带来这样的困境:尽管对风险的认识水平提高了,反而对风险的应对不足。国外从事应急管理工作与应急软件产品开发时间较早,其中美国、日本和德国的应急设备比较先进。目前,我国在突发紧急事件应对的手持终端产品中,呈现功能非常单一,实用性不强,交互性差,也无法实现危机信息预警发布。国内几个常见的同类产如下:1.《求救发讯器》,它只有一个单一的求救功能,通过该应用软件发出内含“卫星定位咨讯”与“定位地址”的电子邮件或简讯给用户的好友,达到呼朋引伴或尽快脱离困境与险境。此方式为单向求助方式,求助者发出求助信息无法和接收到求助信息的接收者进行及时的互动,导致求助者无法及时获得救援或者得到有效的应对措施,以致无法应对处置或者对应处置延迟。2.《现场急救指南》通过整合各类急救知识,使得突发状况下专业救援队还没到达现场或者无法到达的时候,开展妥善的自救与互救。但是软件的ui设计与交互方式不够人性化,通过各类专业性的分门别类,普通的缺乏专业知识的大众,在使用该款软件时,往往出现无法归类判别,以至无法应对处置或者应对处置延迟。而且此方式只能依靠求助者自助,在现场急救指南无法提供帮助时,求助者无法将其求助信息准确及时传达出去,也就无法及时获得外部的救援。3.《紧急呼叫助手》,遇到紧急情况需要拨打匪警,急救,火警,交通事故,天气预报,号码查询等号码时,该工具会对匪警,急救,火警,交通事故等电话拨打时的注意事项有详细的描述,用户可以按照操作指南正确拨打紧急号码,提高拨打效率。此方式是通过拨打常规的救援电话来获得紧急救助,虽然能够进行求助互动,但此类常规的救援电话都对应了常规的救援类型,每个救援电话对应一类或者多类的救援,除其对应的救援外,救援电话的被求助者很难甚至无法提供其他类型的救援。但现实生活中,求助类型各种各样,除常规的救援外,对于其他类型的救援常规的救援电话无法起作用,也就无法提供及时的救援。4.《紧急求救软件adososv1.0》是一款在紧急情况下向其他人显示求救信息的软件,向左或向右刷改变颜色,上或向下刷改变显示的词,可去菜单/设置输入要显示的词,可用手机的locale选择中文或英文。此软件是将求助信息发送出去,但仍然缺少求助者和被求助者之间的互动,导致求助者无法及时获得救援或者得到有效的应对措施,以致无法应对处置或者对应处置延迟,功能十分单一。5.《智能呼救手机》是一款为老年人设计专用的手机,一旦老人突然发生意外,可直接按“999”急救键,不论病人在北京的哪个地方,999的指挥中心都可迅速通过急救手机定位系统,锁定呼救人的位置。显然,该手机功能用途范围较窄,6.《紧急警报》,该应用程序可追踪用户的旅行线路并在用户发生意外事故时,根据事先的设置将事故报告和用户的方位发送到指定手机号码。此方式是被动式地将发生意外事故的信息发送到指定手机号码,无法进行求助者和被求助者之间的互动,导致求助者无法及时获得救援或者得到有效的应对措施,以致无法应对处置或者对应处置延迟,功能十分单一。上述突发事件的紧急求助方式功能单一,无法实现有效地求助互动,就算能够实现求助互动,也仅仅限于电话而且是常规的救援电话的求助,能获得的紧急帮忙非常有限。目前,国际上在移动互联网手持急救援与预警方面的理论与应用研究还是空白,日常的紧急求助系统也尚未见有。因此,基于移动终端紧急求助与风险信息预警平台的设计与算法研究能填补国际学术界在该研究与应用领域的空白,无论是理论研究意义还是实际应用价值都非常大,是大数据社会应用发展的一种应用趋势。技术实现要素:本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种能够提高求助效率的基于随机序列排序算法的日常紧急求助方法。为解决上述技术问题,本发明的技术方案如下:一种基于随机序列排序算法的日常紧急求助方法,包括:s1.针对求助者移动智能终端发出的求助信息,app平台接收应答者的应答信息,并根据应答者与求助者之间的位置信息计算求助者与各个应答者之间的距离;s2.app平台将求助者与各个应答者之间的距离进行排序,并将排序结果反馈给求助者移动智能终端。本发明的app平台根据求助者移动智能终端发出的求助信息转发给求助者周围的移动智能终端上,周围会有人利用移动智能终端进行应答,app平台会收到应答者的应答信息,为了提高求助者对应答信息的筛选,app平台根据应答者和求助者之间的位置信息先计算求助者和各个应答者之间的距离,然后对距离进行从小到大排序,排序结果提供给求助者,这样,求助者可以根据距离排序结果快速找到满足求助要求且距离合适的应答者进行帮忙,从而有效提高求助效率。上述方案中,所述s2中app平台将求助者与各个应答者之间的距离进行从小到大排序的具体步骤为:若在一个限定的时间内,任何一个相同的时间点或其中任何非常短的时间间隔内,没有两个或者两个以上的应答者同时发出应答信息到达app平台,则利用随机序列动态比较置换排序算法对求助者与各个应答者之间的距离进行从小到大排序;若在一个限定的时间内,在相同的一个时间点或者在非常短的时间间隔内,有两个或者两个以上的应答者同时发出应答信息到达app平台,则利用相邻元素奇偶相错比较排序算法对对求助者与各个应答者之间的距离进行从小到大排序。若在一个限定的时间内,有一些时间点只有一个应答者发出信息,从该应答者发出的回应信息距离下一位应答者发出的回应信息有一定的时间间隔;另有一些时间点或在非常短的一个时间间隔内,有两个或以上的应答者同时发出应答信息,则综合交叉应用随机序列动态比较置换排序法和相邻元素奇偶相错比较排序法来对求助者与各个应答者之间的距离进行从小到大排序。利用上述两个排序算法,可以解决不同时间以及相同时间的应答信息的排序问题,从而解决在求助者发出求助信息后,app平台可以对所得到的所有应答者与求助者之间的距离进行远近排序。上述方案中,利用随机序列动态比较置换排序算法对求助者与各个应答者之间的距离进行从小以大排序的具体步骤如下:假设app平台在先后不同的时间内接收到n位应答者的应答信息,用变量m1,m2,…,mn来分别表示这n个应答者与救助者之间的距离;第1步:建立两个空间大小为n+1的空队列a[n]和b[n],队列a和b的首空间a[0]和b[0]留空,b[0]用来做动态元素置换过程的临时备用空间,a[1]是队列a的首元素空间,b[1]是队列b的首元素空间;队列a用来存储原始动态数据mi,队列b用来存储经过对动态数据mi进行比较置换后得到从小到大排序的新数据序列ti,其中i=1,2,…,n;第2步:当接收到第一个应答者的应答信息时,将产生第1位应答者与救助者之间的距离,用变量m1表示;让m1直接入队列a作为首元素,a[1]=m1。令t1=m1,t1入队列b作为首元素,b[1]=t1;第3步:接收到第2位应答者的应答信息,将产生第2位应答者与救助者之间的距离,用变量m2表示,让m2入队a作为尾元素,此时有a[2]=m2;令t2=m2,让t2入队列b中的临时备用空间b[0],即有b[0]=t2;对队列b,以当前b[0]空间中的元素t2作为基准元素,与队列b中已有元素t1作如下比较和置换的操作:1)若t2≥t1,则令b[2]=t2,此时有:b[1]≤b[2],所以队列b中已有的元素t1、t2已按从小到大的顺序排序;2)若t2≤t1,则进行如下置换操作:于是b[1]≤b[2],作如下赋值:得到t1≤t2,因此得到了队列b中的元素t1、t2按从小到大的顺序排序;第4步:接收到第3位应答者发出应答信息,将产生第3位应答者与救助者之间的距离,用变量m3表示,让m3入队a作为尾元素,此时有a[3]=m3;令t3=m3,让t3入队列b中的临时备用空间b[0],即有b[0]=t3;对队列b,以当前b[0]空间中的元素t3作为基准元素,从队列b中当前的尾元素t2起,用t3与队列b中已有元素的倒序:t2、t1之间顺序作如下两两相邻元素逐步比较和置换的操作:若t3≥t2,则令b[3]=t3,此时b[2]≤b[3],因为队列b中已有的元素t2、t1是已经排好序的,即t1≤t2,亦即b[1]≤b[2],所以有b[1]≤b[2]≤b[3],于是有t1≤t2≤t3,所以得到队列b中的元素t1,t2,t3按从小到大的顺序排序;若t3<t2,则需要进一步进行如下比较和置换;若t3≥t1,则有t1≤t3<t2。因为b[1]=t1,b[2]=t2,b[0]=t3,所以b[1]空间中的元素t1不动,需要对t2,t3及其所在的队列空间进行如下置换操作:于是得到b[2]<b[3],作如下赋值:于是得到t2<t3,因此t1≤t2<t3,得到b[1]≤b[2]<b[3],这说明队列b中的元素t1,t2,t3按从小到大的顺序排序;若t3<t1,则有t3<t1≤t2,因为b[1]=t1,b[2]=t2,b[0]=t3,所以需要进行如下置换操作:于是得到b[1]<b[2]≤b[3],作如下赋值:于是得到t1≤t2<t3,此时队列b中的元素t1,t2,t3已按从小到大的顺序排序。第5步:如此继续进行,假设一直进行到在求助者发出求助信息号后,已有k位应答者发送应答信息,其中第i位应答者与求助者之间的距离为mi,mi入队列a,并且按照发布信息的时间前后顺序入队,相应有一个序列ti为mi的一种新排列,满足从小到大的顺序排序,即t1≤t2≤…≤tk,i=1,2,…,k;当第k+1位应答者发出应答信息时,将产生第k+1个距离,即第k+1位应答者与求助者之间的距离,用变量mk+1表示。让mk+1入队a作为尾元素,此时有a[k+1]=mk+1。令tk+1=mk+1,让tk+1入队列b中的临时备用空间b[0],即有b[0]=tk+1;对队列b,以当前b[0]空间中的元素tk+1作为基准元素,从队列b中当前的尾元素tk起,用与队列b中已有元素的倒序:tk,tk-1,…,t3,t2,t1之间顺序作如下两两相邻元素逐步比较和置换的操作:若tk+1≥tk,则令b[k+1]=tk+1,此时有b[k]≤b[k+1],因为队列b中已有的元素t1,t2,t3,…,tk-1,tk是已经排好序的,即t1≤t2≤t3≤…≤tk-1≤tk,亦即b[1]≤b[2]≤b[3]≤…≤b[k-1]≤b[k],所以b[1]≤b[2]≤b[3]≤…≤b[k-1]≤b[k]≤b[k+1],即有t1≤t2≤t3≤…≤tk-1≤tk≤tk+1,于是得到队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序。若tk+1<tk,则需要进一步进行如下比较和置换,若tk+1≥tk-1,则有tk-1≤tk+1<tk。因为b[k-1]=tk-1,b[k]=tk,b[0]=tk+1,所以让b[k-1]空间中的元素tk-1不动,需要对tk,tk+1及其所在的队列空间进行如下置换操作:于是得到b[k]<b[k+1],作如下赋值:于是得到tk<tk+1,因此t1≤t2≤t3≤…≤tk-1≤tk<tk+1,得到b[1]≤b[2]≤b[3]≤…≤b[k-1]≤b[k]<b[k+1],这说明队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序。若tk+1<tk-1,则有,tk+1<tk-1≤tk,因为b[k-1]=tk-1,b[k]=tk,b[0]=tk+1,所以需要进行如下置换操作:于是得到b[k-1]≤b[k]≤b[k+1],作如下赋值:于是得到tk-1<tk≤tk+1,因此t1≤t2≤t3≤…≤tk-1≤tk<tk+1,得到b[1]≤b[2]≤b[3]≤…≤b[k-1]<b[k]≤b[k+1],这说明,队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序;如此继续进行,一直到tk+1<t2,并按照以上的方法得到t2,t3,…,tk-1,tk,tk+1已经按从小到大的顺序排序。于是,只需要最后比较tk+1和t1的大小。令b[0]=tk+1,讨论如下两情形:(ⅰ)假如tk+1≥t1,由于t2≤t3≤…≤tk,所以t1≤tk+1≤t2≤t3≤…≤tk。又因为b[k]=tk,b[k-1]=tk-1,…,b[2]=t2,b[1]=t1,故可作如下置换:则有b[1]≤b[2]≤b[3]≤…≤b[k-1]<b[k]≤b[k+1],然后再作如下赋值:则有t1≤t2≤t3≤…≤tk-1≤tk<tk+1,于是队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序;(ii)假如tk+1<t1,由于t1≤t2≤t3≤…≤tk,所以tk+1<t1≤t2≤t3≤…≤tk。又因为b[k]=tk,b[k-1]=tk-1,…,b[2]=t2,b[1]=t1,故可作如下置换:则有b[1]≤b[2]≤b[3]≤…≤b[k-1]<b[k]≤b[k+1]。然后再作如下赋值:则有t1≤t2≤t3≤…≤tk-1≤tk<tk+1,于是队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序;上述方案中,利用相邻元素奇偶相错比较排序算法对求助者与各个应答者之间的距离进行从小到大排序的具体步骤如下:假设在某一个相同的时间点或非常短的时间间隔内,一共有m位应答者同时发送应答信息到达app平台上,用变量s1,s2,…,sm来表示这m位应答者与救助者之间和距离;第1步:由于m位应答者与求助者之间的距离s1,s2,…,sm是在同一个时间或几乎同一个时间产生的,所以s1,s2,…,sm的初始形态按任意一种序列排序,假设该序列最初就按s1,s2,…,sm排序;第2步,下面分m为偶数、奇数两种不同的情形分别进行讨论(3)若m为偶数(ⅰ)将序列s1,s2,…,sm从左到右两两相邻的元素做成一组数对(si,si+1)其中,i=1,2,…,m-1,由于m是偶数,所以刚好组成组两两相邻的数对;(ii)对每一组数对(si,si+1)中的两个数进行大小比较③若si≤si+1,则保持该数对的顺序不变;④若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过上述比较从左到右对相邻两个数大小的处理,得到s1,s2,…,sm序列从左到右两两相邻的元素已经按照从小到大排序;如果此时整个序列s1,s2,…,sm已经从小到大排序,则算法终止,否则转入下一步(ⅲ);(ⅲ)对序列s1,s2,…,sm,分两步进行:③将第1个元素s1和最后一个元素sm组成数对,然后比较s1和sm的大小;若s1≤sm,则保持s1和sm的顺序不变;若s1>sm,则调换s1和sm的位置,使sm做成该序列的第1个元素,s1做成该序列的最后一个元素;④从第2个元素s2到倒数第2个元素sm-1,从左到右将两两相邻的元素做成一组数对(si,si+1),其中i=2,3,…,m-2,由于m为偶数,所以刚好组成组两两相邻的数对;(iv)对每一组数对(si,si+1)(i=2,3,…,m-2)中的两个数进行大小比较④若si≤si+1,则保持该数对的顺序不变;⑤若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过(iv)从左到右对相邻两个数大小的处理,得到s1≤sm,且s2,s3,…,sm-1序列从左到右两两相邻的元素已经按照从小到大排序。如果此时整个序列s1,s2,…,sm已经从小到大排序,则算法终止,否则回到第2步(1)中的(ⅰ)重新开始,如此反复进行,一直进行到s1,s2,…,sm从小到大排序为止,此时,算法将终止;(4)若m为奇数(ⅰ)将序列s1,s2,…,sm从第1个元素s1起,从左到右两两相邻的元素做成一组数对(si,si+1),其中,i=1,2,…,m-2,由于m是奇数,所以该序列组成组两两相邻的数对,sm为剩余元素,无元素可组对;(ii)对每一组数对(si,si+1)(i=1,2,…,m-2)中的两个数进行大小比较①若si≤si+1,则保持该数对的顺序不变;⑥若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过(ii)从左到右对相邻两个数大小的处理,得到s1,s2,…,sm-1序列从左到右两两相邻的元素已经按照从小到大排序;如果此时整个序列s1,s2,…,sm-1,sm已经从小到大排序,则算法终止;否则转入下一步(ⅲ);(ⅲ)保留第1个元素s1不动,从第2个元素s2起,从左到右两两相邻的元素做成一组数对(si,si+1),其中i=2,3,…,m-1,由于m为奇数,所以可组成组两两相邻的数对;③若si≤si+1,则保持该数对的顺序不变;④若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过(ⅲ)从左到右对相邻两个数大小的处理,得到s2,s3,…,sm序列从左到右两两相邻的元素已经按照从小到大排序;如果此时整个序列s1,s2,…,sm已经从小到大排序,则算法终止;否则回到第2步(2)中的(ⅰ)重新开始,如此反复进行,一直进行到s1,s2,…,sm从小到大排序为止,此时,算法将终止。与现有技术相比,本发明技术方案的有益效果是:在日常紧急求助过程中,求助者在发出求助信息后,周围的人会有应答,因此app平台会收到许多应答者的应答信息。每一条应答信息都与一位应答者相对应。因此,一条应答信息就会产生一个应答者与求助者之间的距离,所有这些应答者与求助者之间的距离随着时间的先后与应答信息同时到达app平台后,就会产生一个应答者与求助者之间距离的队列。由于距离有近有远,求助者一般总是在满足求助要求的前提下,优先选择距离较近的应答者。而当应答信息很多时,求助者要找到满足求助要求且距离较近的应答者不容易,所以本发明通过随机序列动态比较置换排序算法和相邻元素奇偶相错比较排序算法,用来综合交叉解决在日常紧急求助过程中应答者与求助者之间的随机距离随机序列排序问题,app平台通过上述两个随机序列排序算法对距离队列进行排序,将排序结果及时反馈到求助者的移动智能终端上,使求助者可以及时选择出合适的应答者进行帮忙,使得求助者可以及时得到有效的应对帮助,此方法提高紧急求助的及时性和有效性。附图说明图1为本发明基于随机序列排序算法的日常紧急求助方法实施例的流程图。图2为本发明基于随机序列排序算法的日常紧急求助方法具体实施例中求助者与应答者在地表位置的示意图。图3为本发明中求助者与哥哥回应者在地球表面的位置和经纬度示意图。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本发明的技术方案做进一步的说明。实施例1如图1所示,为本发明一种基于随机序列排序算法的日常紧急求助方法具体实施例的流程图。参见图1,本具体实施例一种基于随机序列排序算法的日常紧急求助方法的具体步骤包括:s101.针对求助者移动智能终端发出的求助信息,app平台接收应答者的应答信息,并根据应答者与求助者之间的位置信息计算求助者与各个应答者之间的距离;求助信息可以是求助者的个人信息(如姓名、性别、电话号码等)、需要发送的求助信息文本、图片或者视频、求助者所处地理位置。其中求助者所处地理位置是一个实时地理信息,其可以将求助者位置直接显示在地图中,并能显示求助者发出求助信号后的运动轨迹,从而实时跟踪求助者的地理位置信息,在出现紧急状况需要现场救助时可以及时定位到求助者的实时位置,提高救助的及时性。具体实现时,求助者是通过移动智能终端发出求助信息到app平台上,app平台接收求助者移动智能终端发出的求助信息,并且app平台将接收到的求助信息转发到求助者周围的移动智能终端上,此过程中,app平台可以根据求助者的地理位置信息定位到其周围附近的人群,将求助的信息、图片或者视频发送出去。其中,所述周围是以求助者所在位置为中心、一预定数值为半径所构造的圆的范围;周围接收到求助信息的移动智能终端可以根据实际情况选择是否回应,若回应则app平台会收到应答者的应答信息。求助者周围的移动智能终端是事先与app平台连接的。回应求助信息的应答者指的是收到求助信息后对该求助信息给予应答响应的帮助者,其通过移动智能终端发出应答信息。应答信息包括帮助者的个人信息(如姓名、性别、电话号码等)、应答信息文本、图片、视频、帮助者所处地理位置、与求助者之间的距离等。app平台可以收到多个不同应答者的应答信息。s102.app平台将求助者与各个应答者之间的距离进行从小到大排序,并将排序结果反馈给求助者移动智能终端。app平台将应答者的应答信息以及各个应答者与求助者之间的距离排序结果发送给求助者的移动智能终端,求助者可以根据应答者的地理位置、最短距离、以及信息回应内容等按照个性喜好确定其中一位应答者作为帮助者。具体实施过程中,在步骤s101中,求助者与n个应答者之间的距离可以采用如下计算方式进行,具体为:记求助者为p0,n个应答者为a1,a2,…,an,求助者p0与所示n个应答者a1,a2,…,an之间的距离为d(p0,a1),d(p0,a2),…,d(p0,an);假设求助者p0的经度为x0,纬度为y0,则p0在地球表面的经度和纬度坐标为p0(x0,y0);假设这n个应答者a1,a2,…,an在地球表面的经度和纬度坐标分别为:a1(x1,y1),a2(x2,y2),…,an(xn,yn),其中xi和yi分别是第i个回应者ai(xi,yi)的经度和纬度,i=1,2,…,n;如图2和3所示,为p0(x0,y0)与各回应者a1(x1,y1),a2(x2,y2),…,an(xn,yn)在地表的位置示意图。由于地球太大,而求助者p0(x0,y0)与附近各个回应者ai(xi,yi)(i=1,2,…,n)两者之间的距离相对就非常短了,因此可以预设一个数r,以p0(x0,y0)为圆心、r为半径。(ⅰ)当d(p0,ai)≤r时,近似把在同一地平线的两者之间的连线看成是直线,采用欧氏距离公式来计算p0(x0,y0)与各个回应者ai(xi,yi)(i=1,2,…,n)之间的距离,其计算公式为:(ii)当某个回应者ai(xi,yi)与p0(x0,y0)的距离超过预设的数r时,即d(p0,ai)>r时,p0(x0,y0)与各个回应者ai(xi,yi)(i=1,2,…,n)两者之间的距离采用如下计算公式:r是地面到地心的距离,即地球半径。图3给出了求助者p0(x0,y0)与各个回应者ai(xi,yi)(i=1,2,…,n)在地球表面的位置及其经、纬度。在步骤s102中,若在一个限定的时间内,任何一个相同的时间点或其中任何非常短的时间间隔内,没有两个或者两个以上的应答者同时发出应答信息到达app平台,则利用随机序列动态比较置换排序算法对求助者与各个应答者之间的距离进行从小到大排序;若在一个限定的时间内,在相同的一个时间点或者在非常短的时间间隔内,有两个或者两个以上的应答者同时发出应答信息到达app平台,则利用相邻元素奇偶相错比较排序算法对对求助者与各个应答者之间的距离进行从小到大排序;随机序列动态比较置换排序法是用来解决当救助者发出信息后,在一个限定的时间内,回应信息是按时间先后顺序逐条而来,期间任何一个相同的时间点或其中任何非常短的时间间隔内,没有两个或两个以上的应答信息同时到达,由此在app平台产生的应答者与求助者之间的距离,用变量m1,m2,…,mn来分别表示这n个应答者与救助者之间的距离;这些距离是一些随机动态到达的数字,将这些随机动态的距离数字序列按照从小到大的顺序进行排序。假设在一个限定的时间段内,在其中任何一个相同的时间点或其中任何非常短的时间间隔内,没有两个或两个以上的应答者同时发出应答信息,即app平台收到的应答者发出的应答信息是一个个有次序发来,不是在某一个时间点同时发来。此时动态比较置换排序算法如下:第1步:建立两个空间大小为n+1的空队列a[n]和b[n],如表1所示:a[0]a[1]a[2]a[3]…a[k-1]a[k]a[k+1]…a[n]b[0]b[1]b[2]b[3]…b[k-1]b[k]b[k+1]…b[n]表1空队列a和b约定1:队列a和b的首空间a[0]和b[0]留空,不装元素;b[0]用来做动态元素置换过程的临时备用空间,a[1]是队列a的首元素空间,b[1]是队列b的首元素空间;约定2:队列a用来存储原始动态数据mi(i=1,2,…,n),队列b用来存储经过对动态数据mi(i=1,2,…,n)进行比较置换后得到从小到大排序的新数据序列ti(i=1,2,…,n),其中mi是第i位应答者与求助者之间的实时距离;第2步:当接收到第一个应答者的应答信息时,将产生第1个距离,即产生第1位应答者与救助者之间的距离,用变量m1表示;让m1直接入队列a作为首元素,根据约定1,a[0]留空,不装元素,所以a[1]=m1。令t1=m1,t1入队列b作为首元素,根据约定1,b[1]=t1;如表2所示:表2第3步:(1)当接收到第2位应答者的应答信息,将产生第2位应答者与求助者之间的距离,用变量m2表示,让m2入队a作为尾元素,此时有a[2]=m2;(2)令t2=m2,让t2入队列b中的临时备用空间b[0],即有b[0]=t2,如表3所示:表3(3)对队列b,以当前b[0]空间中的元素t2作为基准元素,与队列b中已有元素t1作如下比较和置换的操作:1)若t2≥t1,则令b[2]=t2,此时有:b[1]≤b[2],所以队列b中已有的元素t1、t2已按从小到大的顺序排序;2)若t2≤t1,则进行如下置换操作:于是b[1]≤b[2],作如下赋值:得到t1≤t2,因此得到了队列b中的元素t1、t2按从小到大的顺序排序,如表4所示:表4第4步:(1)接收到第3位应答者发出应答信息,将产生第3位应答者与求助者之间的距离,用变量m3表示,让m3入队a作为尾元素,此时有a[3]=m3;(2)令t3=m3,让t3入队列b中的临时备用空间b[0],即有b[0]=t3,如表5所示:表5(3)对队列b,以当前b[0]空间中的元素t3作为基准元素,从队列b中当前的尾元素t2起,用t3与队列b中已有元素的倒序:t2、t1之间顺序作如下两两相邻元素逐步比较和置换的操作:若t3≥t2,则令b[3]=t3,此时b[2]≤b[3],因为队列b中已有的元素t2、t1是已经排好序的,即t1≤t2,亦即b[1]≤b[2],所以有b[1]≤b[2]≤b[3],于是有t1≤t2≤t3,所以得到队列b中的元素t1,t2,t3按从小到大的顺序排序;若t3<t2,则需要进一步进行如下比较和置换;若t3≥t1,则有t1≤t3<t2。因为b[1]=t1,b[2]=t2,b[0]=t3,所以b[1]空间中的元素t1不动,需要对t2,t3及其所在的队列空间进行如下置换操作:于是得到b[2]<b[3],作如下赋值:于是得到t2<t3,因此t1≤t2<t3,得到b[1]≤b[2]<b[3],这说明队列b中的元素t1,t2,t3按从小到大的顺序排序;若t3<t1,则有t3<t1≤t2,因为b[1]=t1,b[2]=t2,b[0]=t3,所以需要进行如下置换操作:于是得到b[1]<b[2]≤b[3],作如下赋值:于是得到t1≤t2<t3,此时队列b中的元素t1,t2,t3已按从小到大的顺序排序,如表6所示:表6第5步:如此继续进行,假设一直进行到在求助者发出求助信息号后,已有k位应答者发送应答信息,其中第i位应答者与求助者之间的距离为mi,mi入队列a,并且按照发布信息的时间前后顺序入队,相应有一个序列ti为mi的一种新排列,满足从小到大的顺序排序,即t1≤t2≤…≤tk,i=1,2,…,k,如表7所示:表7当第k+1位应答者发出应答信息时,将产生第k+1个距离,即第k+1位应答者与求助者之间的距离,用变量mk+1表示。让mk+1入队a作为尾元素,此时有a[k+1]=mk+1。令tk+1=mk+1,让tk+1入队列b中的临时备用空间b[0],即有b[0]=tk+1,如表8所示:表8对队列b,以当前b[0]空间中的元素tk+1作为基准元素,从队列b中当前的尾元素tk起,用与队列b中已有元素的倒序:tk,tk-1,…,t3,t2,t1之间顺序作如下两两相邻元素逐步比较和置换的操作:若tk+1≥tk,则令b[k+1]=tk+1,此时有b[k]≤b[k+1],因为队列b中已有的元素t1,t2,t3,…,tk-1,tk是已经排好序的,即t1≤t2≤t3≤…≤tk-1≤tk,亦即b[1]≤b[2]≤b[3]≤…≤b[k-1]≤b[k],所以b[1]≤b[2]≤b[3]≤…≤b[k-1]≤b[k]≤b[k+1],即有t1≤t2≤t3≤…≤tk-1≤tk≤tk+1,于是得到队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序。若tk+1<tk,则需要进一步进行如下比较和置换,若tk+1≥tk-1,则有tk-1≤tk+1<tk。因为b[k-1]=tk-1,b[k]=tk,b[0]=tk+1,所以让b[k-1]空间中的元素tk-1不动,需要对tk,tk+1及其所在的队列空间进行如下置换操作:于是得到b[k]<b[k+1],作如下赋值:于是得到tk<tk+1,因此t1≤t2≤t3≤…≤tk-1≤tk<tk+1,得到b[1]≤b[2]≤b[3]≤…≤b[k-1]≤b[k]<b[k+1],这说明队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序。若tk+1<tk-1,则有,tk+1<tk-1≤tk,因为b[k-1]=tk-1,b[k]=tk,b[0]=tk+1,所以需要进行如下置换操作:于是得到b[k-1]≤b[k]≤b[k+1],作如下赋值:于是得到tk-1<tk≤tk+1,因此t1≤t2≤t3≤…≤tk-1≤tk<tk+1,得到b[1]≤b[2]≤b[3]≤…≤b[k-1]<b[k]≤b[k+1],这说明,队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序,如表9所示:表9如此继续进行,一直到tk+1<t2,并按照以上的方法得到t2,t3,…,tk-1,tk,tk+1已经按从小到大的顺序排序。于是,只需要最后比较tk+1和t1的大小。令b[0]=tk+1,讨论如下两情形:(ⅰ)假如tk+1≥t1,由于t2≤t3≤…≤tk,所以t1≤tk+1≤t2≤t3≤…≤tk。又因为b[k]=tk,b[k-1]=tk-1,…,b[2]=t2,b[1]=t1,故可作如下置换:则有b[1]≤b[2]≤b[3]≤…≤b[k-1]<b[k]≤b[k+1],然后再作如下赋值:则有t1≤t2≤t3≤…≤tk-1≤tk<tk+1,于是队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序;(ii)假如tk+1<t1,由于t1≤t2≤t3≤…≤tk,所以tk+1<t1≤t2≤t3≤…≤tk。又因为b[k]=tk,b[k-1]=tk-1,…,b[2]=t2,b[1]=t1,故可作如下置换:则有b[1]≤b[2]≤b[3]≤…≤b[k-1]<b[k]≤b[k+1],然后再作如下赋值:则有t1≤t2≤t3≤…≤tk-1≤tk<tk+1,于是队列b中的元素t1,t2,t3,…,tk-1,tk,tk+1按从小到大的顺序排序;应答者的数量以及应答者进行应答响应的时间是不定的,那么对于求助者而言,应答者的数量n以及接收到应答信息的时间均属于一个随机序列,则产生的求助者与应答者之间的距离序列也是一个随机序列,而且是实时的随机序列。上述排序算法采用两个队列对距离序列这一实时随机序列进行排序,利用队列a对距离值按照产生时间进行存储和排序,队列b通过动态排序方法对实时产生的距离值进行从小到大排序,解决了实时动态随机序列的从小到大排序问题,使得求助者在做出一对一交互对话的选择之前都能够实时得到求助者与各应答者之间的距离的排序序列,从而给求助者提供准确的距离信息。如果在相同的一个时间点或在非常短的时间间隔内,出现有两个或两个以上的应答者同时发出应答信息,则采用相邻元素奇偶相错比较排序法进行排序。相邻元素奇偶相错比较排序法是用来解决当求助者发出信息后,在同一个时间内或非常短的时间间隔内,同时到达多位应答者的应答信息,由此在app平台同时产生很多个的距离。虽然这些距离也是随机到达的数字,但由于它们是同时到达app平台的,到达后是一个可观的随机静态数字,将这些随机静态的距离数字序列按照从小到大的顺序进行排序,相邻元素奇偶相错比较排序法具体为:假设在某一个相同的时间点或非常短的时间间隔内,一共有m位应答者同时发送应答信息到达app平台上,用变量s1,s2,…,sm来表示这m位应答者与求助者之间和距离;第1步:由于m位应答者与求助者之间的距离s1,s2,…,sm是在同一个时间或几乎同一个时间产生的,所以s1,s2,…,sm的初始形态按任意一种序列排序,假设该序列最初就按s1,s2,…,sm排序;第2步,下面分m为偶数、奇数两种不同的情形分别进行讨论(5)若m为偶数(ⅰ)将序列s1,s2,…,sm从左到右两两相邻的元素做成一组数对(si,si+1)其中,i=1,2,…,m-1,由于m是偶数,所以刚好组成组两两相邻的数对;(ii)对每一组数对(si,si+1)中的两个数进行大小比较⑤若si≤si+1,则保持该数对的顺序不变;⑥若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过上述比较从左到右对相邻两个数大小的处理,得到s1,s2,…,sm序列从左到右两两相邻的元素已经按照从小到大排序;如果此时整个序列s1,s2,…,sm已经从小到大排序,则算法终止,否则转入下一步(ⅲ);(ⅲ)对序列s1,s2,…,sm,分两步进行:⑤将第1个元素s1和最后一个元素sm组成数对,然后比较s1和sm的大小;若s1≤sm,则保持s1和sm的顺序不变;若s1>sm,则调换s1和sm的位置,使sm做成该序列的第1个元素,s1做成该序列的最后一个元素;⑥从第2个元素s2到倒数第2个元素sm-1,从左到右将两两相邻的元素做成一组数对(si,si+1),其中i=2,3,…,m-2,由于m为偶数,所以刚好组成组两两相邻的数对;(iv)对每一组数对(si,si+1)(i=2,3,…,m-2)中的两个数进行大小比较⑦若si≤si+1,则保持该数对的顺序不变;⑧若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过(iv)从左到右对相邻两个数大小的处理,得到s1≤sm,且s2,s3,…,sm-1序列从左到右两两相邻的元素已经按照从小到大排序。如果此时整个序列s1,s2,…,sm已经从小到大排序,则算法终止,否则回到第2步(1)中的(ⅰ)重新开始,如此反复进行,一直进行到s1,s2,…,sm从小到大排序为止,此时,算法将终止;(6)若m为奇数(ⅰ)将序列s1,s2,…,sm从第1个元素s1起,从左到右两两相邻的元素做成一组数对(si,si+1),其中,i=1,2,…,m-2,由于m是奇数,所以该序列组成组两两相邻的数对,sm为剩余元素,无元素可组对;(ii)对每一组数对(si,si+1)(i=1,2,…,m-2)中的两个数进行大小比较①若si≤si+1,则保持该数对的顺序不变;⑨若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过(ii)从左到右对相邻两个数大小的处理,得到s1,s2,…,sm-1序列从左到右两两相邻的元素已经按照从小到大排序;如果此时整个序列s1,s2,…,sm-1,sm已经从小到大排序,则算法终止;否则转入下一步(ⅲ);(ⅲ)保留第1个元素s1不动,从第2个元素s2起,从左到右两两相邻的元素做成一组数对(si,si+1),其中i=2,3,…,m-1,由于m为奇数,所以可组成组两两相邻的数对;⑤若si≤si+1,则保持该数对的顺序不变;⑥若si>si+1,则调换该数对的顺序,使该数对左边的数小于右边的数;经过(ⅲ)从左到右对相邻两个数大小的处理,得到s2,s3,…,sm序列从左到右两两相邻的元素已经按照从小到大排序;如果此时整个序列s1,s2,…,sm已经从小到大排序,则算法终止;否则回到第2步(2)中的(ⅰ)重新开始,如此反复进行,一直进行到s1,s2,…,sm从小到大排序为止,此时,算法将终止。假如在求助者发出求助信息的一个时间段里,有一些时间点或非常短的时间间隔里只有一个应答者发出应答信息,而还有一些时间点或非常短的时间间隔里同时有多个(至少有二个以上)应答者发出应答信息。为了便于表述,把“非常短的时间间隔”就看成是一个时间点,这样在求助者发出求助信息后就可能出现如下4种情形:情形1:从第一个时间点开始,有一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息;然后紧接着的后面一个时间点,该一个时间点同时有多个应答者(至少有二个以上应答者)发出应答信息;情形2:从第一个时间点开始,有一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息;然后紧接着的后面多个连续时间点(至少有二个以上连续时间点),该多个连续时间点中每一个时间点同时有多个应答者(至少有二个以上应答者)发出应答信息;情形3:第一个时间点出现同时有多个应答者(至少有二个以上应答者)发出应答信息;从第二个时间点起,紧接着的后面一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息;情形4:从第一个时间点开始,有多个连续时间点(至少二个以上连续时间点)同时有多个应答者(至少有二个以上应答者)发出应答信息;然后紧接着的后面一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息。由于在求助者发出求助余下的时间里,无论应答者是以何种方式出现,即无论是在一个时间点只有一个应答者发出应答信息,还是在一个时间点同时有多个应答者(指至少有二个以上应答者)发出应答信息,或是这两种应答情形交错地出现,都极易知道:此后应答者的应答情形都将是前面已出现过的任意一种应答情形而已,即是前面应答情形的随机重复,没有产生新的应答情景。因此,此后应答者的应答情形对算法的实现没有产生任何影响,故无须另行研究。为此,我们主要解决:(1)从第一个时间点起有一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息;然后紧接着的后面一个时间点,该一个时间点同时有多个应答者(至少有二个以上应答者)发出应答信息;(2)第一个时间点出现同时有多个应答者(至少有二个以上应答者)发出应答信息;从第二个时间点起,紧接着的后面一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息;(3)第一个时间点出现同时有多个应答者(至少有二个以上应答者)发出应答信息;第二个时间点也出现同时有多个应答者(至少有二个以上应答者)发出应答信息;以上三种情形解决的方法都是:如果有一个或多个连续时间点(二个连续时间点以上),每个时间点都只有一个应答者发出应答信息,则采用“随机序列动态比较置换排序算法”的排序方法进行从小到大排序。如果一个时间点出现同时有多个应答者(至少有二个以上应答者)发出应答信息,则采用“相邻元素奇偶相错比较排序法”的排序方法进行从小到大排序。因此,这三种情形无论是哪一种都会出现这种情形:前后有两个已经从小到大排序的队列,将它们进行首尾相接,然后组合成一个新的队列,我们要对该新的队列进行从小到大排序。为此,我们提出基于二个已排队序列的多值连续比较交叉插入排序法。不妨假设前面的队列有k(k≥1为正整数,下同)个数(都是应答者与求助者的距离):u1,u2,…,uk,并且已经从小到大排序,即有u1≤u2≤…≤uk。后面的队列有l(l≥2为正整数,下同)个数(也都是应答者与求助者的距离),v1,v2,…,vl,也已经从小到大排序,即有v1≤v2≤…≤vl,将这两个队列进行首尾相接,组合成一个新的队列为:u1,u2,…,uk,v1,v2,…,vl。下面我们将提出“基于二个已排队序列的多值连续比较交叉插入排序法”来解决新组合的队列u1,u2,…,uk,v1,v2,…,vl,其从小到大的排序问题。基于二个已排队序列的多值连续比较交叉插入排序法如下:建立列队c[k+l],其中c[0]不装元素,留来做数据交换过程的备用空间。先让u1,u2,…,uk依次入队c,于是有:c[1]=u1,c[2]=u2,…,c[k]=uk;接着让:v1,v2,…,vk依次入队c,于是有:c[k+1]=v1,c[k+2]=v2,…,c[k+l]=vl。因此,我们得到一新的队列:c[1]=u1,c[2]=u2,…,c[k]=uk,c[k+1]=v1,c[k+2]=v2,…,c[k+l]=vl,如表10所示。c[0]c[1]c[2]...c[k-1]c[k]c[k+1]c[k+1]...c[k+1-1]c[k+1]u1u2…uk-1ukv1v2…vk+l-1vk+l表10定义两个指针i和j,其中1≤i≤j-1,i+1≤j≤k+l。(i)起初令i=k,j=i+1,比较c[i]和c[j]的大小①如果c[i]≤c[j],因为c[i]=c[k]=uk,c[j]=c[i+1]=c[k+1]=v1,所以有uk≤vl。又因为u1≤u2≤…≤uk,v1≤v2≤…≤vl,因此有u1≤u2≤…≤uk≤v1≤v2≤…≤vl,即c[1]≤c[2]≤…≤c[k-1]≤c[k]≤c[k+1]≤c[k+2]…≤c[k+l-1]c[k+l]所以,队列c中的元素已经排好序。②如果c[i]>c[j],则令j=j+1(ii)重复(i)中的②一直进行下去,直到存在某一个t(k+1≤t≤k+l),使当只有j=t时有c[i]≤c[j]=c[t];而当i+1≤j<t时,恒有c[i]>c[j]。于是,作如下置换:此时得到的队列c中的元素变化如表11所示。c[0]c[1]c[2]...c[k-1]c[k]c[k+1]...c[t-2]c[t-1]c[t]...c[k+l]uku1u2…uk-1v1v2…vt-1vt…vk+l表11队列c中最后的元素排列如表12所示。c[0]c[1]c[2]...c[k-1]c[k]c[k+1]...c[t-2]c[t-1]c[t]...c[k+l]u1u2…uk-1v1v2…vt-1ukvt…vk+l表12(iii)令i=i-1,j=i+1,然后一直重复(i)和(ii);(iv)重复(iii),并且一直进行到i=1为止,算法结束。此时,c中得到一个新的队列元素:w1,w2,…,wk,wk+1,wk+2,…,wk+1,其数据大小已经按照从小到大排序,即:c[1]≤c[2]≤…≤c[k]≤c[k+1]≤c[k+2]≤…≤c[k+l],亦即:w1≤w2≤…≤wk≤wk+1≤wk+2≤…≤wk+l,如表13所示。c[0]c[1]c[2]...c[k-1]c[k]c[k+1]c[k+1]...c[k+1-1]c[k+1]w1w2…wk-1wkwk+1wk+1…wk+l-1wk+l表13这些新的队列元素:w1,w2,…,wk,wk+1,wk+2,…,wk+l是原来队列c中初始的数据排列u1,u2,…,uk,v1,v2,…,vl中的一个新排列。相同或相似的标号对应相同或相似的部件;附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1