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

        ?

        C語言中枚舉算法的優(yōu)化及理解難易程度分析

        2014-10-17 11:16:56張朝鑫
        中國新通信 2014年5期
        關(guān)鍵詞:枚舉素數(shù)復(fù)雜度

        張朝鑫

        【摘要】計算機(jī)程序設(shè)計語言C,在高校中普及開來,其算法教學(xué)的難易程度不同,學(xué)生理解把握不好。本文以常見的的教學(xué)方法,層層深入分析其中較為典型的“枚舉”算法,以基本的形式為支撐、不斷優(yōu)化其算法。

        【關(guān)鍵詞】枚舉算法優(yōu)化C語言

        一、引言

        枚舉算法常常稱之為窮舉法,是計算機(jī)高級語言中很重要的一種算法,從可能出現(xiàn)的集合中一一列舉所有元素,用給定的已知條件來判斷是“有效的”還是“無效的”。所謂有效的就是條件成立,也就是問題的一個解法。

        二、常見枚舉算法

        枚舉算法在使用計算機(jī)編程求解數(shù)學(xué)問題時,很常見,比如:“百錢百雞”、“求水仙花數(shù)”、“求質(zhì)子數(shù)”、“求素數(shù)”。這些都是根據(jù)已知條件,在一個范圍域里,求符合條件的集合;可以表示為:a∈b。

        以“求素數(shù)”為例,以多種方式求解,并比較其算法的優(yōu)缺點和學(xué)生理解的難易程度;使學(xué)生得以全面理解掌控其算法的特點。大家知道素數(shù)的含義:除自然數(shù)1以外只能被1和它自己本身整除的數(shù)即的素數(shù)。從理解的角度,從“素數(shù)”的定義,直接編程求100以內(nèi)的素數(shù)。列舉從2開始的數(shù),分別用2至100的數(shù)去除,如果余數(shù)為0則說明當(dāng)前的數(shù)不是素數(shù),反之則是。程序核心代碼如下:

        for(i=2;i<100;i++)

        {flag=1;for(j=2;j<100;j++)if(i%j==0){flag=0;break;} if(flag==1)

        printf("i=%d是100以內(nèi)的一個素數(shù)\n",i);

        }

        顯而易見,這種方法是對最原始的枚舉法的詮釋。對于學(xué)生來說很容易理解,也是對枚舉算法的定義的解釋表現(xiàn);但是,其算法效率低、無效循環(huán)多。很明顯,如果在枚舉域大的時候,其弊端就會使程序運行困難。

        三、優(yōu)化枚舉域后的算法

        從上面的算法大家會發(fā)現(xiàn),雖然最終可以得出結(jié)果,但其改進(jìn)的空間很大。大家可以從其枚舉域過大入手來優(yōu)化,上述程序深入研究后會發(fā)現(xiàn):變量i在外層循環(huán)控制變量,其作用是列舉2以后所有的數(shù);變量j在內(nèi)層循環(huán),其作用是判斷其是否是素數(shù)和判斷的范圍。由此,可得出:例如i值等于78,本來判斷最大范圍應(yīng)該是2至77就足夠了。

        所以,上述程序第二行可以優(yōu)化為:“{flag=1;for(j=2;j

        四、進(jìn)一步優(yōu)化枚舉算法4.1時間復(fù)雜度縮小優(yōu)化

        前面我提出的算法,如果用時間復(fù)雜度來表示的話,應(yīng)該是:O(i)。但是我們知道,除了2是素數(shù)以外;只要是2的整數(shù)倍是數(shù)它就不是素數(shù),如果我們把它扣除在外那么速度就會提高一倍。表示為:O(i/2),可以在程序中加入以下語句來實現(xiàn):

        bool isPrime(int i)

        {if(i<2)return false;

        fo(rint k=2;k

        if(i%k==0)return false;return true;}

        在原有的基礎(chǔ)之上,此程序在開始執(zhí)行前加上了判斷其是否是偶數(shù)的語句;看似程序加長并變復(fù)雜。學(xué)生的第一感覺都是這樣,上述例子就是以函數(shù)的形式來展現(xiàn),就是要學(xué)生理解;它其實就是完成一個小的功能而已,把這個理解了,就不難理解程序時間復(fù)雜度減小了一半。

        4.2數(shù)學(xué)上的值域優(yōu)化

        數(shù)學(xué)上有定理:如果i不是素數(shù),則i有滿足1

        在4.1節(jié)例子中程序第3行應(yīng)該改成:“for(int k=2;k<=sqrt(i);k+=2)”。這種方式,可以認(rèn)為是初學(xué)C語言者的一個教學(xué)難點和重點;其綜合性很強(qiáng),除了要掌握前面所述的算法外,還要對數(shù)學(xué)方面的知識能夠?qū)W懂。但只要大家比較其時間復(fù)雜度,就會得出很明顯的算法優(yōu)化,就知道其重要性。

        五、結(jié)束語

        枚舉算法在生活中經(jīng)常使用,在計算機(jī)編程中由為重要。雖然根據(jù)其原理,學(xué)者提出了許多的方法,諸如:篩法求素數(shù),二分法求素數(shù),利用數(shù)組等方式;但對于初學(xué)者來說又太難,本文是提高??茖W(xué)生學(xué)習(xí)能力的有效路徑。

        參考文獻(xiàn)

        [1]梁潘.基于枚舉算法的優(yōu)化方法研究.阿壩師范高等專科學(xué)校電子信息工程系.重慶三峽學(xué)院學(xué)報. 2010.3

        猜你喜歡
        枚舉素數(shù)復(fù)雜度
        孿生素數(shù)
        兩個素數(shù)平方、四個素數(shù)立方和2的整數(shù)冪
        基于理解性教學(xué)的信息技術(shù)教學(xué)案例研究
        速讀·上旬(2022年2期)2022-04-10 16:42:14
        一種高效的概率圖上Top-K極大團(tuán)枚舉算法
        關(guān)于兩個素數(shù)和一個素數(shù)κ次冪的丟番圖不等式
        一種低復(fù)雜度的慣性/GNSS矢量深組合方法
        求圖上廣探樹的時間復(fù)雜度
        奇妙的素數(shù)
        基于太陽影子定位枚舉法模型的研究
        某雷達(dá)導(dǎo)51 頭中心控制軟件圈復(fù)雜度分析與改進(jìn)
        亚洲av色无码乱码在线观看 | 亚洲精品视频免费在线| 亚洲免费一区二区av| 丰满少妇人妻无码| 伊人久久大香线蕉av网禁呦| 两个人看的www中文在线观看| 精品国产AⅤ一区二区三区V免费| 国产三级精品三级在线| 国产毛片视频一区二区| 亚洲人成人网站在线观看| 日韩国产一区| 中文字幕一区二区三区在线视频| 少妇又色又爽又高潮在线看| 狠狠躁夜夜躁人人躁婷婷视频| 国产喷水福利在线视频| 蜜桃视频一区二区三区在线| 二区免费在线视频观看| 国产盗摄xxxx视频xxxx| 欧美在线成人午夜网站| 粗大挺进孕妇人妻在线| 无人区乱码一区二区三区| 亚洲国产无套无码av电影| 久久国产乱子精品免费女| 99久久婷婷亚洲综合国产| 国产尤物精品视频| 国内精品九九久久久精品| 亚洲一级av大片在线观看| 中文字幕一区二区精品视频| 精品久久欧美熟妇www| 巨爆乳中文字幕爆乳区| 亚洲精品中文字幕码专区| 日本不卡高字幕在线2019| 最近中文字幕mv在线资源| 校花高潮一区日韩| 亚洲精品国产av日韩专区 | 开心激情视频亚洲老熟女| 欧美成人在线视频| 国产成人无码A区在线观| 国产亚洲日本精品二区| 久久久久人妻精品一区三寸| 国产无码夜夜一区二区|