青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

JonsenElizee

Software Developing Blog

"An idea is fragile . It can be killed by a scornful smile or a yawn .It can be mound down by irony and scared to death by a cold look."
"Most cultures throughout human history have not liked creative individuals .They ignore them or kill them.It is a very efficient way of stopping creativity."

------Advertising boss Charles Browe and Howard Gardner ,professor at Harvard

   :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::
Issue:
內存只能容納100W個數,
現在有1億數,混序,
然后求這一億個數的中位數,
中位數(就是一個有序數組的中間數字,數組長度為偶數就是兩個,奇數則只有一個)

/*****************************************************************************/
/* this program should find out the median(s) in N(logN)/(logB) no matter there
/* is duplicated data or not.
/*
/* with memory limitation: 4MB memory available. in fact, it can work on 1MB.
/* I would like to express the idea with code.
/* here is just the pseudocode with out any optimization for easy understanding.
/* 
/* maybe, there is no need to check sum == N/2 or N/2+1, but this will get the 
/* median(s) as soon as possible with out more recursive invoking.
/*
/* sorry for any logical problem. please let me know if you found any.
/****************************************************************************
*/


int N = 100000000;// total data number is N
int B = 1000000;  // number of buckets.
int min, max;
scan data from 
0 to N-1 get min and max; // O(N);

// num the data number that is less than min
// min the minimum data in the target data range to find median(s)
// max the maximum data in the target data range to find median(s)
void find_median(int num=0int min, int max)
{
    
if(min == max) {
        
if(N%2) {
            print medians are min and max;
        }
        
else print median is min; // show you the result
        return// exit
    }

    
// count all the data in O(N)
    
int m = max-min > B ? ((max-min)%B ? (max-min)/B + 1 : (max-min)/B)1;
    
int cnt[B] = {0}; // count the data read.
    while(!EOF) {
        
int data = read_data()-min;
        // count data in this range [min, max]
        // data/m will get the position of data to increase the cnt[?] value
        
if(data >= min && data <= max) cnt[data/m]++;
    }
    
    
int sum = num, median_1, median_2, i = 0;
    
while(sum < N/2) sum += cnt[i++];
    i
--// median is in the range of [i*m, (i+1)*m-1]

    
/* get median(s) when sum is N/2 */
    
if(sum == N/2) {
        
if(N%2) { // N is even and there are two medians.
            median_1 = (i+2)*m-1;
            median_2 
= i*m;
            
while(!EOF) {
                
int data = read_data()-min;
                
if(data/== i) {
                    median_2 
= (data > median_2 ? data : median_2);
                }
                
if(data/== i+1) {
                    median_1 
= (data < median_1 ? data : median_1);
                }
            }
            pintf medians are median_1 and median_2;
            
return;
        }
   
       
else { // N is an odd number and there is one median.
            median_1 = (i+2)*m-1;
           
while(!EOF) {
               
int data = read_data();
               
if(data/== i+1) median_1 = (data < median_1 ? data : median_1);
            }
            print median 
is median_1;
           
return;
        }
    }

    
/* get median(s) when sum is N/2+1 */
    
if(sum == N/2+1) {
        
if(N%2) { // N is even and there are two medians.
            median_1 = i*m;
            median_2 
= i*m;
            
while(!EOF) {
                
int data = read_data();
                
if(data/== i) {
                    median_1 
= max;
                    median_2 
= (data > median_2 ? data : median_2);
                }
            }
            pintf medians are median_1 and median_2;
            
return;
        }
   
       
else {
            median_2 
= i*m; // get (N/2+1)th data.
            while(!EOF) {
               
int data = read_data();
               
if(data/== i) median_2 = (data > median_2 ? data : median_2);
            }
            print median 
is median_2;
           
return;
        }
    }

   
    
// if sum is not N/2 or (N/2 + 1), recursively to find out the median(s)
    min 
= (i+1)*m-1;
    max 
= i*m;
    
// get min and max for next processing
    while(!EOF) 
    {
        
int data = read_data()-min;
        
if(data/== i)
        {
            min 
= (data < min ? data : min);
            max 
= (data > max ? data : max);
        }
    }
    find_median(sum, min, max);
}


posted on 2010-10-28 16:39 JonsenElizee 閱讀(1597) 評論(0)  編輯 收藏 引用 所屬分類: Data Structures & Algorithms
By JonsenElizee
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产欧美高清| 欧美视频一区二区三区在线观看| 欧美成人精品一区| 久久男人av资源网站| 翔田千里一区二区| 久久久欧美一区二区| 免费成人av在线| 欧美国产视频在线| 亚洲精品欧美激情| 小嫩嫩精品导航| 久久综合一区二区| 欧美日韩一区二区在线观看 | 日韩午夜av电影| 亚洲少妇诱惑| 久久免费高清视频| 欧美日韩精品| 国产综合欧美| 一区二区三区四区五区视频| 午夜精品久久久久久久99热浪潮| 久久精品国产69国产精品亚洲| 免费观看日韩av| 在线视频亚洲一区| 久久久天天操| 国产精品国产馆在线真实露脸| 国产一级精品aaaaa看| 亚洲美女色禁图| 欧美一区91| 最新国产成人av网站网址麻豆| 亚洲精选一区| 久久久久99精品国产片| 欧美日韩在线高清| 亚洲国产精品热久久| 午夜精品久久久| 91久久国产精品91久久性色| 欧美亚洲日本国产| 欧美午夜精品久久久久久人妖| 伊人色综合久久天天五月婷| 亚洲已满18点击进入久久| 牛牛影视久久网| 亚洲欧美日韩国产| 欧美日韩国产成人在线| 亚洲国产成人av| 久久精品视频导航| 亚洲性人人天天夜夜摸| 欧美日韩国产综合视频在线观看 | 久久久亚洲成人| 校园春色综合网| 亚洲精品美女在线观看播放| 亚洲人在线视频| 亚洲精品日韩激情在线电影| 欧美一区二区三区四区高清| 亚洲国产精品久久| 久久久久青草大香线综合精品| 国产精品久久久久久久浪潮网站| 亚洲免费av片| 亚洲国产一区二区三区a毛片| 久久久久久999| 黄色资源网久久资源365| 欧美亚洲三区| 亚洲一区二区免费视频| 欧美日韩国产另类不卡| 亚洲精品中文字| 91久久久精品| 欧美看片网站| 中日韩美女免费视频网址在线观看 | 亚洲欧美综合v| 一二三区精品| 国产精品久久久久久福利一牛影视| 一区二区国产在线观看| 夜色激情一区二区| 国产色产综合产在线视频| 久久国产福利国产秒拍| 久久九九精品99国产精品| 亚洲电影在线播放| 亚洲国产天堂久久综合网| 欧美连裤袜在线视频| 亚洲一卡久久| 午夜精品久久久久久久99樱桃| 国产精品视频久久| 久久精品综合一区| 久久久97精品| 亚洲免费观看高清完整版在线观看熊| 99热在线精品观看| 国产亚洲欧美一区| 亚洲激情av在线| 国产精品v一区二区三区| 欧美一区二区三区喷汁尤物| 久久久久久九九九九| 亚洲三级国产| 亚洲在线成人| 亚洲激情中文1区| 一区二区三区免费观看| 国内成人在线| 一区二区三区精密机械公司| 一区二区在线不卡| 一区二区成人精品 | 国产精品女主播一区二区三区| 欧美日韩亚洲一区二区三区| 亚洲一区影音先锋| 久久久精品动漫| 午夜精品久久久久99热蜜桃导演| 久久蜜桃香蕉精品一区二区三区| 亚洲精品日产精品乱码不卡| 性8sex亚洲区入口| 一本一本久久a久久精品综合麻豆| 亚洲欧美一区二区三区极速播放| 亚洲国产美女| 午夜天堂精品久久久久| 亚洲激情成人网| 欧美亚洲综合网| 亚洲永久网站| 欧美啪啪一区| 欧美岛国在线观看| 国产午夜精品全部视频在线播放| 亚洲精品午夜| 亚洲欧洲偷拍精品| 久久久久久久性| 欧美在线视频日韩| 国产精品久久久久久久久借妻| 亚洲国产综合在线| 亚洲国产精品一区二区www在线| 亚洲欧美激情视频| 亚洲图片在线| 欧美日韩不卡视频| 欧美激情影音先锋| 亚洲第一网站免费视频| 久久精品综合网| 久久综合久久美利坚合众国| 国产女主播在线一区二区| 一本久道久久综合婷婷鲸鱼| 夜夜嗨av一区二区三区四区| 欧美sm重口味系列视频在线观看| 免费看成人av| 亚洲成人在线网| 久久色中文字幕| 牛牛精品成人免费视频| 在线免费观看日本一区| 久久久久高清| 欧美高清视频免费观看| 亚洲国产欧美不卡在线观看| 狂野欧美一区| 亚洲大片精品永久免费| 亚洲精品日韩精品| 欧美连裤袜在线视频| 日韩视频永久免费观看| 亚洲校园激情| 国产日韩1区| 久久精品99无色码中文字幕| 久久综合亚州| 亚洲美女av在线播放| 欧美四级在线观看| 亚洲一区二区三区午夜| 99re亚洲国产精品| 日韩视频一区二区三区在线播放| 一本色道久久综合亚洲精品小说 | 久久综合伊人77777尤物| 国产亚洲欧美日韩一区二区| 欧美专区在线观看| 免费观看日韩av| 一区二区国产精品| 国产精一区二区三区| 久久久精品免费视频| 禁久久精品乱码| 欧美大片18| 亚洲资源av| 欧美高清免费| 午夜视频久久久| 亚洲精华国产欧美| 欧美日韩高清在线播放| 亚洲欧美色婷婷| 亚洲电影免费在线观看| 午夜精品一区二区三区在线播放| 1769国产精品| 国产精品自拍三区| 欧美激情五月| 欧美中文在线观看| 一本一本久久a久久精品牛牛影视| 久久亚裔精品欧美| 亚洲一区二区三区四区五区黄| 国产精品综合| 欧美激情亚洲自拍| 久久国产直播| 亚洲另类自拍| 久久中文精品| 欧美综合激情网| 亚洲少妇最新在线视频| 伊甸园精品99久久久久久| 欧美午夜精彩| 欧美美女视频| 鲁大师成人一区二区三区| 亚洲一区中文| 亚洲蜜桃精久久久久久久| 久久精品视频在线播放| 这里只有精品视频在线| 亚洲第一久久影院| 韩国自拍一区| 国产美女一区二区| 欧美三级日本三级少妇99| 免费欧美日韩| 久久久91精品国产一区二区三区 |