亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        關(guān)于Google日歷中事件排列算法的實(shí)現(xiàn)

        2012-04-24 06:26:50福建省科學(xué)技術(shù)信息研究所劉懷北
        海峽科學(xué) 2012年4期
        關(guān)鍵詞:數(shù)組寬度算法

        福建省科學(xué)技術(shù)信息研究所 劉懷北

        ?

        關(guān)于Google日歷中事件排列算法的實(shí)現(xiàn)

        福建省科學(xué)技術(shù)信息研究所 劉懷北

        Google Calendar作為一款基于事件的日歷系統(tǒng),以友好的操作界面和實(shí)用的功能而著稱(chēng)。在事件的顯示方面,通過(guò)自適應(yīng)調(diào)整事件寬度的方式進(jìn)行排列,避免事件之間的重疊,直觀地反映事件的時(shí)間與分布。該文對(duì)Google Calendar中事件排列顯示的方式進(jìn)行了解析,對(duì)其中的概念進(jìn)行了抽象與定義,并提出了一種相應(yīng)的算法實(shí)現(xiàn)。

        Google Calendar 功能 事件排列算法

        0 引言

        Google Calendar[1]作為Google在線服務(wù)的一個(gè)重要組成部分,以其簡(jiǎn)潔易用的操作界面、全面實(shí)用的功能以及豐富而強(qiáng)大的插件,贏得了廣大用戶(hù)的青睞。在顯示事件的方式上,Google Calendar通過(guò)自適應(yīng)調(diào)整事件寬度進(jìn)行排列的方式來(lái)處理時(shí)間上存在重疊的事件,從而使得用戶(hù)能夠一目了然地查看事件的時(shí)間與分布。

        本文通過(guò)對(duì)該事件顯示方式進(jìn)行一系列的解析,闡述自適應(yīng)調(diào)整寬度進(jìn)行排列的目的與方法,構(gòu)造并提出一種相應(yīng)的算法實(shí)現(xiàn)。

        1 事件的排列顯示

        如下圖1所示,不同情況下事件的顯示方式可以歸納為以3種:

        ● 自然排列:每個(gè)事件都完整的顯示,并占據(jù)整列;

        ● 重疊排列:每個(gè)事件都占據(jù)整列顯示,后面的事件會(huì)遮蓋前面的事件;

        ● 自適應(yīng)寬度排列:每個(gè)事件各占據(jù)約整列寬的一半,并且完整顯示。

        圖1 事件的3種排列顯示方式

        顯然,當(dāng)2個(gè)事件之間存在重疊的情況下,第3種排列顯示方法要比第2種方法更有效,用戶(hù)能夠直觀地看到2個(gè)事件的時(shí)間跨度,而第2種重疊排列的顯示方式則無(wú)法反映出第1個(gè)事件在何時(shí)結(jié)束,用戶(hù)必須借助文字信息才能做出判斷。不能想象,在更多事件之間存在更多重疊的情況下,第2種排列顯示方式對(duì)于用戶(hù)來(lái)說(shuō)是毫無(wú)意義的。

        2 自適應(yīng)寬度排列算法

        自適應(yīng)寬度排列方式的優(yōu)點(diǎn)在于能夠通過(guò)調(diào)整事件在列表中的顯示寬度和水平位置來(lái)降低或避免事件顯示時(shí)的重疊。為此,可以通過(guò)2個(gè)步驟來(lái)實(shí)現(xiàn):(1)查找在時(shí)間上存在重疊的事件,建立連續(xù)重疊事件集合;(2)根據(jù)重疊的情況安排事件顯示的寬度和水平位置。

        2.1 連續(xù)重疊事件集合

        如果事件A與事件B之間存在時(shí)間重疊,稱(chēng)A與B直接重疊;如果事件B與事件C也直接重疊,則事件A重疊可達(dá)C;如果事件C重疊可達(dá)事件E,則事件A也重疊可達(dá)E。

        圖2 連續(xù)重疊事件集合示例

        連續(xù)重疊事件集合(以下簡(jiǎn)稱(chēng)為COE集合)是指在連續(xù)時(shí)間區(qū)域上,所有能夠通過(guò)重疊連接的事件所組成的集合。任意2個(gè)屬于該集合的事件A和B,至少滿足以下2個(gè)條件之一:①A和B直接重疊;②A重疊可達(dá)B。

        如圖2所示,事件ABCDE形成了COE集合1,事件FH形成了COE集合2。值得指出的是,任何集合1中的事件都無(wú)法重疊達(dá)到任何集合2中的事件。

        2.2 建立COE集合

        定義COE集合類(lèi),該類(lèi)維護(hù)一個(gè)事件數(shù)組evtList,存儲(chǔ)所有屬于該集合的事件,并按照事件發(fā)生時(shí)間順序排列。

        建立COE集合的過(guò)程可以通過(guò)按照時(shí)間順序遍歷所有事件一次完成,其具體算法如下(JavaScript[2]偽代碼):

        其中sortByTime方法將evts數(shù)組按事件起始先后排序;belongWhichCOE方法在coes數(shù)組中查找,返回傳入事件所屬的COE集合,如果未找到,則返回null;insert方法則將事件插入到COE集合中適當(dāng)位置。

        2.3 自適應(yīng)寬度排列

        建立COE集合數(shù)組后,需要為每個(gè)COE集合中的事件計(jì)算寬度和水平位置,為此需要根據(jù)各事件間的重疊情況對(duì)事件進(jìn)行分列顯示,其具體算法如下(JavaScript偽代碼):

        上述COE類(lèi)的insert方法將完成事件的插入和列的建立與更新;findColumn方法用于尋找空隙的列來(lái)插入事件;而isOverlap方法則負(fù)責(zé)判斷列中是否有空隙能夠容納傳入的事件;最后layout算法完成對(duì)COE集合中事件的排列。

        因此,最終整個(gè)算法可以歸納為如下過(guò)程。

        [1] Google日歷在線系統(tǒng),https://www.google.com/calendar/render?tab=mc

        [2] John Resig. Versions of JavaScript. Ejohn.org, 2009

        猜你喜歡
        數(shù)組寬度算法
        JAVA稀疏矩陣算法
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        基于MapReduce的改進(jìn)Eclat算法
        Travellng thg World Full—time for Rree
        進(jìn)位加法的兩種算法
        馬屁股的寬度
        一種改進(jìn)的整周模糊度去相關(guān)算法
        尋找勾股數(shù)組的歷程
        紅細(xì)胞分布寬度與血栓的關(guān)系
        孩子成長(zhǎng)中,對(duì)寬度的追求更重要
        人生十六七(2015年5期)2015-02-28 13:08:24
        激情人妻在线视频| 男人进去女人爽免费视频| 色一情一乱一伦一区二区三区| 中国女人内谢69xxxx免费视频| 超薄肉色丝袜一区二区| 成人精品免费av不卡在线观看| 熟女少妇丰满一区二区| 国产亚洲精品90在线视频| 国产69精品久久久久777| 呻吟国产av久久一区二区| 亚洲日韩AV无码美腿丝袜 | 丰满人妻中文字幕一区三区| 国产又色又爽又黄的| 久久6国产| 亚洲综合天堂av网站在线观看| 人妻少妇进入猛烈时中文字幕| 精品9e精品视频在线观看| 在线播放国产女同闺蜜| 亚洲熟女一区二区三区不卡| 精品日本一区二区三区| 高潮内射双龙视频| 五十路熟妇亲子交尾| 亚洲日本人妻中文字幕| 国产桃色一区二区三区| 内射夜晚在线观看| 国产乱人伦精品一区二区| 99国产综合精品-久久久久 | 蜜芽亚洲av无码精品色午夜| 精品无码中文字幕在线| 啪啪网站免费观看| 国产一区二区三区成人| 国产又粗又猛又黄又爽无遮挡| 911精品国产91久久久久| 亚洲天堂免费成人av| 中文字幕无码成人片| 国产人妻无码一区二区三区免费| 免费在线日韩| 国产自拍视频在线观看免费| 最近中文字幕大全在线电影视频| 国产精品一久久香蕉国产线看观看| 亚洲香蕉久久一区二区|