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

        ?

        一種新的排序算法研究

        2015-04-21 02:38:26王偉全陸攀曹均闊張學(xué)平
        微型電腦應(yīng)用 2015年6期
        關(guān)鍵詞:智能算法數(shù)組復(fù)雜度

        王偉全,陸攀,曹均闊,張學(xué)平

        一種新的排序算法研究

        王偉全,陸攀,曹均闊,張學(xué)平

        排序是計(jì)算機(jī)科學(xué)中最重要的研究問(wèn)題之一。介紹了一種新的排序算法,全面深入地分析了擠壓式排序的算法思想以及算法實(shí)現(xiàn),并對(duì)該算法在時(shí)間和空間上的復(fù)雜度進(jìn)行了分析,與快速排序算法、希爾排序算法進(jìn)行了理論上的對(duì)比。理論分析及實(shí)驗(yàn)數(shù)據(jù)表明,該算法是正確的,可行的,在同類(lèi)排序算法中有明顯優(yōu)勢(shì)。

        擠壓式排序;遞歸;歸并;算法

        0 引言

        排序(Sorting),就是將數(shù)據(jù)元素(或記錄)的一個(gè)任意序列,重新排列成一個(gè)按關(guān)鍵字有序的序列。由于排序是計(jì)算機(jī)科學(xué)中一項(xiàng)復(fù)雜而重要的技術(shù),無(wú)論在系統(tǒng)軟件還是在應(yīng)用軟件中使用頻率都很高[2],排序算法在最短路徑算法中的應(yīng)用起著關(guān)鍵性的作用,在通信、衛(wèi)星拓?fù)渚W(wǎng)絡(luò)、地理信息系統(tǒng)(GIS)和計(jì)算機(jī)網(wǎng)絡(luò)等的研究和應(yīng)用中起著基礎(chǔ)性的作用[3]。由此可見(jiàn),排序算法在實(shí)際的軟件中發(fā)揮著重要的作用。

        目前已有的排序算法都難以在任何情況下都保持較快的速度,所以對(duì)新的排序算法的研究是有實(shí)際價(jià)值的。性能較優(yōu)的算法有快速排序、歸并排序等,其中快速排序主要運(yùn)用了遞歸的思想,歸并排序則運(yùn)用了歸并的方法。結(jié)合快速排序的遞歸算法和歸并排序的歸并思想,本文提出一種新的算法-擠壓排序。該算法時(shí)間和空間性能較好,在海量數(shù)據(jù)排序中優(yōu)勢(shì)較突出。

        1 算法描述與實(shí)現(xiàn)

        1.1 算法思想

        擠壓排序,顧名思義就是整個(gè)排序過(guò)程采用類(lèi)似“擠壓”的方式來(lái)實(shí)現(xiàn)。該算法融合了遞歸與歸并的思想,具體思想闡述如下:

        定義2個(gè)數(shù)組:Data[1...n]存儲(chǔ)待排序的元素,Sorted[1...n]存儲(chǔ)已排好序的元素。以下分別簡(jiǎn)稱(chēng)為D和S。

        第一步:通過(guò)第一趟排序?qū)⒋判驍?shù)組D分成三個(gè)部分,其中兩個(gè)部分分別存放在數(shù)組S的前部和后部,前部元素的值要比后面所有元素的值小,第三個(gè)部分覆蓋到數(shù)組D的前部。

        第二步:對(duì)數(shù)組S的前部和后部進(jìn)行歸并,將歸并結(jié)果存放在數(shù)組S的前部。

        第三步:按照此方法對(duì)剛剛放在數(shù)組D中的第三個(gè)部分進(jìn)行擠壓排序,直到數(shù)組S中的元素是數(shù)組D中的所有元素的有序排列。

        1.2 算法推演

        為了更直觀地描述和分析算法,現(xiàn)以實(shí)際數(shù)據(jù)為例進(jìn)行算法推演。數(shù)組定義見(jiàn)2.1所述,

        max、min、unsorted_so_far、sorted_so_far分別記錄最大值、最小值、未排序的個(gè)數(shù)和已排序的個(gè)數(shù),假定初始數(shù)組D為{34,53,21,78,123,25,110,28,84},數(shù)組S為空。

        排序過(guò)程:

        (1)將數(shù)組D分割成3個(gè)部分,其中兩個(gè)部分分別存儲(chǔ)在數(shù)組S的前部和后部。結(jié)果狀態(tài)為:D{25,110,28,84,123,25,110,28,84},S{21,null,null,null,null,123,78,53,34}。(分割原則:初始化max=min=D[0],當(dāng)D[i]>=max,將該元素在數(shù)組S中從下標(biāo)為n-1向前放,并更新max的值;當(dāng)D[i]<min時(shí),將該元素在數(shù)組S中從sorted_so_far位置往后放,并更新min的值。當(dāng)不滿足前兩個(gè)條件時(shí),把該元素在數(shù)組D中從下標(biāo)為0開(kāi)始存放。)從分割結(jié)束的數(shù)組D可知,前4個(gè)元素沒(méi)有轉(zhuǎn)移到數(shù)組S中,意味著本趟排序操作對(duì)這4個(gè)元素沒(méi)有影響,此時(shí)unsorted_so_far=4,等待下一趟排序。

        (2)對(duì)數(shù)組S的前部和后部進(jìn)行歸并,以數(shù)組D為中介,暫時(shí)存放歸并結(jié)果。歸并結(jié)束后,將結(jié)果復(fù)制并覆蓋到數(shù)組S的前部。結(jié)果狀態(tài)為:D{25,110,28,84,123,78,53,34,21},S{123,78,53,34,21,123,78,53,34}。此時(shí),由數(shù)組S可知,前面5個(gè)元素已有序,剩下4個(gè)元素待排序。

        (3)當(dāng)上述(2)執(zhí)行完畢后,第一趟排序結(jié)束。然后把步驟(1)所得結(jié)果數(shù)組D中前4個(gè)元素(斜體)依次用上述步驟完成整個(gè)擠壓排序過(guò)程,最后直到unsorted_so_far=0,數(shù)組S中的元素即全部有序(S{123,110,84,78,53,34,28,25,21}),排序完成。

        2.3 算法實(shí)現(xiàn)(C++)

        //定義全局變量,分別用于記錄待排序的個(gè)數(shù),已排好序的個(gè)數(shù),未排序的個(gè)數(shù)

        2 算法復(fù)雜度分析

        2.1 空間復(fù)雜度

        實(shí)現(xiàn)該算法過(guò)程中,除數(shù)組D外,另外需申請(qǐng)一個(gè)數(shù)組S,實(shí)現(xiàn)該算法需2n的空間,故空間復(fù)雜度為O(n)。

        2.2 時(shí)間復(fù)雜度

        該算法的時(shí)間復(fù)雜度主要取決于遞歸的次數(shù),當(dāng)不考慮排序時(shí)遞歸的次數(shù),算法的時(shí)間復(fù)雜度為O(n)。令遞歸次數(shù)為c次,那么c的值可能會(huì)根據(jù)排序序列的不同而不同。最好情況下為c=0時(shí)(即經(jīng)過(guò)0次遞歸就已經(jīng)排序完成),例如序列68,72,43,81,88,30,108,12,5,129……,按照此規(guī)律排列的數(shù)可以不用經(jīng)過(guò)遞歸就可實(shí)現(xiàn)排序(規(guī)律:從第一個(gè)元素開(kāi)始一部分元素(斜體)一直遞增,另一部分元素一直遞減)滿足上述規(guī)律的數(shù)據(jù)序列,該算法可以高效地對(duì)序列進(jìn)行排序,時(shí)間復(fù)雜度為O(n)。最壞情況是每次遞歸只能擠壓兩個(gè)數(shù),例如序列1,100,2,99,3,98,4,96,5,95……,這種情況下該算法是比較低效率的,時(shí)間復(fù)雜度為2+4+6+……+(n-2)+n=O(n^2)。

        2.3 復(fù)雜度對(duì)比分析

        (1)快速排序

        快速排序算法的基本思想:在數(shù)組中選擇一個(gè)軸值,將其它數(shù)與軸值比較,比軸值小的數(shù)放在軸值左邊,比軸值大的數(shù)放在右邊。于是,數(shù)組就分割成了兩個(gè)子數(shù)組,遞歸執(zhí)行上述步驟,直到子數(shù)組變成兩個(gè)元素為止。

        時(shí)間復(fù)雜度:最好情況下為O(nlogn),最壞情況下為O(n^2)。

        空間復(fù)雜度:需O(logn)的輔助空間。

        (2)冒泡排序

        冒泡排序算法的基本思想:將被排序的數(shù)組D[1...n]垂直排列,每個(gè)元素D[i]視為重量為D[i].key的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組D,凡掃描到違反本原則的輕氣泡,就使其向上“飄浮”。如此反復(fù)進(jìn)行,直到最后任何兩個(gè)氣泡都是輕者在上,重者在下為止。

        時(shí)間復(fù)雜度:最好情況下(初始為正序),只需通過(guò)n-1次比較,不需要移動(dòng)關(guān)鍵字,即為O(n);最壞情況下(初始為逆序),須進(jìn)行n(n-1)/2次比較,即為O(n^2)[4]。

        空間復(fù)雜度:整個(gè)排序過(guò)程為比較交換,需O(1)的輔助空間。

        表1 復(fù)雜度對(duì)比分析情況表

        3 算法性能對(duì)比分析

        對(duì)大量數(shù)據(jù)進(jìn)行多次測(cè)試(數(shù)據(jù)由隨機(jī)函數(shù)Rand()產(chǎn)生),多次測(cè)試結(jié)果如下表:

        表2 大數(shù)據(jù)下算法性能測(cè)試對(duì)比分析情況表

        由上表對(duì)比實(shí)驗(yàn)結(jié)果數(shù)據(jù)分析可得:擠壓排序在時(shí)間性能上略低于快速排序,但卻比冒泡排序快很多。

        4 總結(jié)

        本文研究提出的擠壓排序算法是合理的、有效的,具有一定的先進(jìn)性和應(yīng)用前景。

        [1]霍紅衛(wèi),許進(jìn).快速排序算法研究[J].微電子學(xué)與計(jì)算機(jī),2002.

        [2]周建欽.超快速排序算法[J].計(jì)算機(jī)工程與應(yīng)用,2006.

        [3]汪維清,羅先文,汪維華.分組排序算法[J].計(jì)算機(jī)工程與應(yīng)用,2008.

        [4]淦艷,楊有.五種排序算法的性能分析[J].重慶文理學(xué)院學(xué)報(bào)(自然科學(xué)版),2010.

        [5]Clifford A.Shaffer.Data Structures and Algorithm Analysis in C++[M].北京:電子工業(yè)出版社,2013.

        Study on a New Sort Algorithm

        Wang Weiquan1,Lu Pan2,Cao Junkuo3,Zhang Xueping3
        (1.Network Management Center,Hainan Medical University,Haikou 571199,China; 2.College of Computer Science and Engineering,South China University of Technology,Guangzhou 510006,China; 3.College of Information Science and Technology,Hainan Normal University,Haikou 571100,China)

        Sorting is one of the most important research problems in the area of Computer Science.In this paper,a new sorting algorithm called Squeeze sort is introduced.There are detailed analyses about the thought of this sorting algorithm and the comparison with Quick sort and Shell sort in theory in the paper.It also gives the algorithm implementation in C++.Both theoretical analysis and experimental tests confirm that Squeeze sort algorithm is correct,feasible and has obvious advantages when compared with other algorithms using similar methods.

        Squeeze Sort;Recursion;Merge;Algorithm

        TP311

        A

        1007-757X(2015)06-0061-02

        2014.12.07)

        王偉全(1984-),男,海南醫(yī)學(xué)院,實(shí)驗(yàn)師,學(xué)士,研究方向:智能算法、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò),??冢?71199

        陸 攀(1996-),男,華南理工大學(xué),大學(xué)本科,研究方向:智能算法、數(shù)據(jù)庫(kù)、手機(jī)應(yīng)用開(kāi)發(fā),廣州,510006

        曹均闊(1973-),男,海南師范大學(xué),副教授,博士,研究方向:智能算法、數(shù)據(jù)庫(kù)、嵌入式開(kāi)發(fā)、手機(jī)應(yīng)用開(kāi)發(fā),??冢?71100

        張學(xué)平(1963-),男,海南師范大學(xué),副教授,學(xué)士,研究方向:智能算法、數(shù)據(jù)庫(kù),???,571100

        猜你喜歡
        智能算法數(shù)組復(fù)雜度
        JAVA稀疏矩陣算法
        神經(jīng)網(wǎng)絡(luò)智能算法在發(fā)電機(jī)主絕緣狀態(tài)評(píng)估領(lǐng)域的應(yīng)用
        基于超像素的圖像智能算法在礦物顆粒分割中的應(yīng)用
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        一種低復(fù)雜度的慣性/GNSS矢量深組合方法
        從雞群算法看群體智能算法的發(fā)展趨勢(shì)
        求圖上廣探樹(shù)的時(shí)間復(fù)雜度
        改進(jìn)的多目標(biāo)快速群搜索算法的應(yīng)用
        某雷達(dá)導(dǎo)51 頭中心控制軟件圈復(fù)雜度分析與改進(jìn)
        尋找勾股數(shù)組的歷程
        成人午夜高潮a∨猛片| 亚洲国产综合专区在线电影| 国产高跟丝袜在线诱惑| 中文字幕34一区二区| 亚洲亚洲人成综合丝袜图片| 又色又污又爽又黄的网站| 久久中文字幕日韩精品| 亚洲国产精品嫩草影院久久av| 在线观看午夜视频一区二区| 国产亚洲午夜高清国产拍精品 | 亚洲中文字幕国产剧情| av一区二区三区在线| 国产亚洲午夜高清国产拍精品| 老熟妇Av| 亚洲发给我的在线视频| 曰韩无码av一区二区免费| 四川少妇大战4黑人| 亚洲ⅤA中文字幕无码| 蜜桃在线视频一区二区| 国产成人综合美国十次| 国产一区二区不卡老阿姨| 久久人妻av无码中文专区| 男女调情视频在线观看| 爱性久久久久久久久| 免费一级毛片麻豆精品| 亚洲黄色大片在线观看| 手机在线看片| 亚洲精品国偷自产在线99正片| 亚洲综合一| 国产三级精品三级男人的天堂| 国产综合无码一区二区辣椒| 澳门精品无码一区二区三区 | 99久久超碰中文字幕伊人| 成人欧美一区二区三区白人| 国产一区二区三区视频了 | 超级少妇一区二区三区| 亚洲国产精品中文字幕久久| 国产亚洲日本精品无码| 亚洲爆乳大丰满无码专区| 亚洲天堂男人的av天堂| 国产尤物精品视频|