• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            付翔的專欄
            在鄙視中成長 記錄成長的點滴
            posts - 106,  comments - 32,  trackbacks - 0

            題目:輸入n個整數(shù),輸出其中最小的k個。
            例如輸入1,2,3,4,5,6,7和8這8個數(shù)字,則最小的4個數(shù)字為1,2,3和4。

            1 在數(shù)據(jù)量不大的情況下,排序

            2 維護(hù)一個最小k 的數(shù)組 ,復(fù)雜度 為 o(k * N)

            3 為一個最小K個數(shù)的最大堆 o(log2 k * N)

            /*
            查找最小的k 個元素
            題目:輸入n 個整數(shù),輸出其中最小的k 個。
            例如輸入1,2,3,4,5,6,7和8這8個數(shù)字,
            則最小的4個數(shù)字為1,2,3和4。
            */
            
            /*
            思路 : 來一個數(shù)據(jù)處理一個 ,當(dāng)來的數(shù)據(jù)量小于K 時 ,全部處理成最大堆,
                    然后之后來的,必須要小于最大堆的的最大值,才可以入堆,此時 只需更新 根節(jié)點,再調(diào)整堆。
            
            */
            # include<stdio.h>
            # include<stdlib.h>
            const int K = 5 ;//這里可以修改 
            const int MAXN = 1000;
            
            int max_heap[K+1] ;//維護(hù)一個 最大堆 
            int end ,maxPos;
            
            
            void swap(int &a ,int &b)
            {
                int t = a;a = b ; b = t;
            }
            
            
            int FindMax()
            {
                int maxPos = 1;
                for(int i = 2 ;i <= K ; i ++)
                    if(max_heap[i] >max_heap[maxPos] )
                        maxPos = i;
                return maxPos;
            }
            /*將數(shù)據(jù)插入到 數(shù)組中  插入排序的思想*/
            void insertMinHeap(int mdata)
            {
                int i,child = 0;
                if(end == K +1 ) // 如果堆滿  
                {    
                /*    int mmaxPos = FindMax();*/
                    if(mdata >= max_heap[1] ) // 如果大于等于該堆的最大值 不做任何改變
                        return ;
            
                    max_heap[1] = mdata;
                    for(i = 1 ; i*2  <=  K ;i = child)
                    {
                        child = 2*i  ;
                        if((i*2 +1 <= K && max_heap[i*2] < max_heap[i*2+1]) )//返回最大孩子的下表
                            child ++;
                        if(max_heap[i] < max_heap[child])
                            swap(max_heap[i] ,max_heap[child]);
                        else 
                        {
                            break;
                        }
                    }        
                    return ;
                }
            
                max_heap[end ++] = mdata;
                for(i = end -1  ; i > 1 ; i /=2)
                {
                    if(max_heap[i] > max_heap[i/2])
                        swap(max_heap[i] ,max_heap[i/2]);
                    else 
                    {
                        break;
                    }
                }
                
            }
            int main()
            {
                int n,data;
                freopen("in.txt","r",stdin);//如果想從文件輸入 將這句注釋掉 1234 1 2 3 4 5 6 7 8 9 10 11  
                end = 1;
                while(scanf("%d",&data)!=EOF) // 如果是手工輸入 結(jié)束輸入 按 ctrl + z
                {
                    insertMinHeap(data);
            
                }
                
                for(int i = 1 ; i <= K ; i ++) // 
                    printf("%d ",max_heap[i]);
                printf("\n");
            
                return 0;
            }
            posted on 2011-04-21 13:26 付翔 閱讀(1292) 評論(0)  編輯 收藏 引用 所屬分類: ACM 數(shù)據(jù)結(jié)構(gòu)

            <2010年4月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            CSDN - 我的blog地址

            博客

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国产高潮国产高潮久久久91 | 久久国产热精品波多野结衣AV| 久久久久久国产精品无码下载| 国产精品免费久久久久久久久| 久久99精品免费一区二区| 亚洲∧v久久久无码精品| 四虎国产永久免费久久| 国产精品美女久久福利网站| 九九精品99久久久香蕉| 2019久久久高清456| 日韩精品久久久久久| 一本久久免费视频| 久久91精品国产91久久麻豆| 亚洲AV无码1区2区久久| 一本久久久久久久| 99久久免费国产特黄| 精品精品国产自在久久高清| 99精品国产免费久久久久久下载 | 亚洲国产成人久久笫一页| 99精品久久精品| 一本久久知道综合久久| 午夜天堂av天堂久久久| 久久久久亚洲AV成人网人人网站 | 国产成人精品三上悠亚久久| 亚洲国产成人久久精品动漫| 欧美伊人久久大香线蕉综合| 九九热久久免费视频| 日本精品久久久久中文字幕| 欧美一区二区三区久久综| 亚洲乱码精品久久久久..| 欧美久久久久久精选9999| 久久最近最新中文字幕大全| 无码伊人66久久大杳蕉网站谷歌 | 久久久精品久久久久久 | 亚洲国产成人久久一区久久| 久久精品?ⅴ无码中文字幕| 国产三级精品久久| 国产精品久久久久久久午夜片| 久久综合综合久久狠狠狠97色88| 国产亚洲欧美成人久久片| 天天爽天天爽天天片a久久网|