哪吒2之魔童闹海|哪吒2之魔童归来免费观看|哪吒2在线观看|哪吒2魔童闹海电影免费观看|哪吒2免费观看完整版大电影|哪吒1免费观看完整版

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 開發(fā)語言 >> 文章正文

非常高效的排序算法,大家看一下

1//位圖排序法,時(shí)空高效的至高境界
 2#include <cstdio>
 3
 4#define BITSPERWORD 32
 5#define SHIFT 5
 6#define MASK 0x1F
 7#define N 10000000
 8int a[1 + N/BITSPERWORD];
 9
10void set(int i){
11    a[i >> SHIFT] |= (1<<(i & MASK));
12}
13
14void clr(int i){
15    a[i >> SHIFT] &= ~(1<<(i & MASK));
16}
17
18int test(int i){
19    return a[i >> SHIFT] & (1<<(i & MASK));
20}
21
22int main(void) {
23    int i;
24    for (i = 0; i < N; i++) {
25        clr(i);
26    }
27    //while (scanf("%d", &i) != EOF) {
28    //    set(i);
29    //}
30    for (int j = 0; j < 3; j++) {    //供簡(jiǎn)單的正確性測(cè)試
31        scanf("%d", &i);            //注意,輸入的數(shù)不能重復(fù)
32        set(i);                        //否則當(dāng)只輸入一次
33    }
34    for (i = 0; i < N; i++) {
35        if (test(i))
36            printf("%d\n", i);
37    }
38    return 0;
39}
為什么說這個(gè)算法時(shí)空效率達(dá)到及致呢?我們對(duì)100萬個(gè)不重復(fù)的正整數(shù)(1000000以內(nèi))的文件進(jìn)行測(cè)試:

 系統(tǒng)排序 C++/STL.set C/qsort C/位圖
總時(shí)間(s) 89 38 12.6 10.7
計(jì)算時(shí)間(s) 79 28 2.4 0.5
內(nèi)存使用(MB) 0.8 70 4 1.25
(本測(cè)試數(shù)據(jù)是在較舊的電腦上測(cè)試的,但還是體現(xiàn)性能的差距)
  第一行是總時(shí)間,第二行的計(jì)算時(shí)間是總時(shí)間減去數(shù)據(jù)讀取耗時(shí)10.2秒。雖然通用C++程序使用內(nèi)存和CPU時(shí)間是專用C程序(C/位圖)的50倍,但是它的使用僅需要一半的代碼,并能很容易擴(kuò)展到其他問題上,這也是專用C程序最大的缺點(diǎn)吧。

作者:未知 | 文章來源:未知 | 更新時(shí)間:2007-12-15 16:35:48

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    重載算法運(yùn)算符
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·搜集整理的asp.net的驗(yàn)證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項(xiàng)目開發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開發(fā)中項(xiàng)目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實(shí)現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實(shí)現(xiàn)方式
    ·delphi實(shí)現(xiàn)利用arp欺騙來實(shí)
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開發(fā)過程中的性能設(shè)計(jì)
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) www.pg11qqq.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000