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

隨筆 - 25, 文章 - 0, 評論 - 6, 引用 - 0
數據加載中……

四種查找算法的簡單分析與實現

#pragma once


/*
                --- 順序查找 ---
按數組從頭開始一一查找。
*/


int SequenceSearch(int nArray[], int nLength, int nValue)
{
    
for (int n = 0; n < nLength; ++n)
    
{
        
if (nArray[n] == nValue)
        
{
            
return n;
        }

    }

    
return -1;
}



/*
                --- 折半查找 ---
1、確定數組的折半中點,對數組折半;
2、比較查找的數據a與中點數據b的大小關系,若a<b則對數組的后半部分重復步驟1,若a>b則對數組的前半部分重復步驟1,直到數組元素為1;
3、判斷該元素是否為要找的元素。
*/


int HalfSearch(int nArray[], int nLow, int nHigh, int nValue)
{
    
int nIndex = -1;

    
if (nLow < nHigh)
    
{
        
int nMid = (nLow + nHigh) / 2;
        
if (nArray[nMid] > nValue)
        
{
            nIndex 
= HalfSearch(nArray, 0, nMid - 1, nValue);
        }

        
else if (nArray[nMid] < nValue)
        
{
            nIndex 
= HalfSearch(nArray, nMid + 1, nHigh, nValue);
        }

        
else if (nArray[nMid] == nValue)
        
{
            nIndex 
= nMid;
        }

    }

    
return nIndex;
}


/*
                --- 哈希查找 ---
1、確定哈希的key與value的關系,及沖突的解決方案;
2、將數據插入到哈希數組;
3、根據value結合沖突解決方案查找key。
*/


void InsertHash(int nArray[], int nValue, int nHashBase)
{
    
int nKey = nValue % nHashBase;
    
while(nArray[nKey] != 0)
    
{
        nKey 
= (++nKey) % nHashBase;
    }

    nArray[nKey] 
= nValue;
}


int SearchHash(int nArray[], int nValue, int nHashBase)
{
    
int nKey = nValue % nHashBase;
    
while(nArray[nKey] != 0 && nArray[nKey] != nValue)
    
{
        nKey 
= (++nKey) % nHashBase;
    }

    
return (nArray[nKey] == nValue ? nKey : -1);
}


void Test_HashSearch()
{
    
int nArray[5= {0};
    InsertHash(nArray, 
25);
    InsertHash(nArray, 
35);
    InsertHash(nArray, 
75);
    InsertHash(nArray, 
15);
    InsertHash(nArray, 
45);

    
int nKey = SearchHash(nArray, 25);
    std::cout 
<< "find 2: key = " << nKey << ",actual: " << nArray[nKey] << std::endl;
    nKey 
= SearchHash(nArray, 35);
    std::cout 
<< "find 3: key = " << nKey << ",actual: " << nArray[nKey] << std::endl;
    nKey 
= SearchHash(nArray, 75);
    std::cout 
<< "find 7: key = " << nKey << ",actual: " << nArray[nKey] << std::endl;
    nKey 
= SearchHash(nArray, 15);
    std::cout 
<< "find 1: key = " << nKey << ",actual: " << nArray[nKey] << std::endl;
    nKey 
= SearchHash(nArray, 45);
    std::cout 
<< "find 4: key = " << nKey << ",actual: " << nArray[nKey] << std::endl;
}



/*
                --- 索引查找 ---
1、確定關鍵字key的計算方案,將索引劃分區域,確定每個區域的起始地址,區域的容量;
2、根據1,將數據插入到數組對應的區域;
3、查找數據,根據1找到對應的區域,在該區域中順序查找。
*/


struct tagIndex
{
    tagIndex(
int nIndex, int nStart):m_nIndex(nIndex),m_nStart(nStart),m_nLength(0){}
    
int m_nIndex;
    
int m_nStart;
    
int m_nLength;
}
;

tagIndex
* Indexs[3= {new tagIndex(0,0), new tagIndex(1,10), new tagIndex(2,20)};

void InsertIndex(int nArray[], int nValue)
{
    
int nIndex = nValue / 10;
    
int nArrayIndex = Indexs[nIndex]->m_nStart + Indexs[nIndex]->m_nLength;
    nArray[nArrayIndex] 
= nValue;
    
++Indexs[nIndex]->m_nLength;
}


int IndexSearch(int nArray[], int nValue)
{
    
int nIndex = nValue / 10;
    
for (int n = Indexs[nIndex]->m_nStart; n < Indexs[nIndex]->m_nStart + Indexs[nIndex]->m_nLength; ++n)
    
{
        
if (nArray[n] == nValue)
        
{
            
return n;
        }

    }

    
return -1;
}


void Test_InsertSearch()
{
    
int nArray[30= {0};
    InsertIndex(nArray, 
8);
    InsertIndex(nArray, 
18);
    InsertIndex(nArray, 
28);
    InsertIndex(nArray, 
12);

    
int nIndex = IndexSearch(nArray, 8);
    std::cout 
<< "find 8: Index = " << nIndex << ", actual = " << nArray[nIndex] << std::endl;
    nIndex 
= IndexSearch(nArray, 18);
    std::cout 
<< "find 18: Index = " << nIndex << ", actual = " << nArray[nIndex] << std::endl;
    nIndex 
= IndexSearch(nArray, 28);
    std::cout 
<< "find 28: Index = " << nIndex << ", actual = " << nArray[nIndex] << std::endl;
    nIndex 
= IndexSearch(nArray, 12);
    std::cout 
<< "find 12: Index = " << nIndex << ", actual = " << nArray[nIndex] << std::endl;
}


void Test_Search()
{
    
int nArray[5= {0,1,2,3,5};
    
int nIndex = SequenceSearch(nArray, 55);
    std::cout 
<< "SequenceSearch find 5: index = " << nIndex << ", actual = " << nArray[nIndex] << std::endl;

    nIndex 
= HalfSearch(nArray, 044);
    std::cout 
<< "HalfSearch find 4: index = " << nIndex << ", actual = " << nArray[nIndex] << std::endl;

    
//Test_HashSearch();
    
//Test_InsertSearch();
}

posted on 2013-03-28 19:57 chenjt3533 閱讀(366) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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色综合久久久综合网| 免费高清在线视频一区·| 久久偷窥视频| 亚洲黄色一区| 亚洲美女黄色| 亚洲——在线| 久久尤物视频| 欧美日韩精品免费观看视一区二区| 欧美日韩另类一区| 国产精品一区视频| 极品少妇一区二区三区| 亚洲精品一二三区| 亚洲欧美日韩一区二区三区在线观看 | 亚洲永久网站| 裸体素人女欧美日韩| 欧美日韩午夜剧场| 国产亚洲成av人片在线观看桃| 亚洲国产高清一区二区三区| 亚洲一区在线观看免费观看电影高清| 久久久高清一区二区三区| 亚洲激情偷拍| 久久久久五月天| 国产精品视频免费一区| 亚洲国产免费| 久久精品1区| aⅴ色国产欧美| 蜜桃av一区二区在线观看| 国产精品外国| 这里只有精品电影| 亚洲成人在线免费| 欧美日韩国产成人在线| 黄色精品网站| 午夜亚洲福利| 亚洲日本欧美天堂| 蜜桃久久av| 悠悠资源网久久精品| 欧美一区二区性| 一本一本大道香蕉久在线精品| 老司机精品视频网站| 国产中文一区二区三区| 欧美一区二区三区四区在线观看地址 | 欧美精品久久久久久久久久| 国产真实久久| 欧美亚洲综合久久| 一区二区三区色| 欧美人成在线视频| 亚洲精品资源| 91久久国产自产拍夜夜嗨| 久久伊人一区二区| 加勒比av一区二区| 久久免费黄色| 久久精品成人欧美大片古装| 国产日韩一区二区三区在线播放| 亚洲女人天堂av| 亚洲一区二区三区四区中文| 国产精品久久久久国产a级| 亚洲一区区二区| 一区二区冒白浆视频| 欧美调教vk| 欧美一级在线播放| 亚洲自拍电影| 韩国三级电影一区二区| 久久综合影音| 欧美电影在线观看完整版| 亚洲精选视频免费看| 亚洲精品日韩一| 欧美视频在线播放| 欧美一区观看| 久久久久久有精品国产| 亚洲精品久久久久久久久久久久久| 欧美激情第一页xxx| 欧美国产专区| 亚洲欧美久久久久一区二区三区| 亚洲一区在线观看免费观看电影高清| 国产精品一区=区| 久久影音先锋| 欧美美女福利视频| 性一交一乱一区二区洋洋av| 欧美一区二区三区免费在线看| 黄色一区二区三区四区| 亚洲国产精品日韩| 国产精品少妇自拍| 免费成人在线视频网站| 欧美猛交免费看| 欧美在线亚洲综合一区| 久久香蕉国产线看观看网| 一区二区三区av| 欧美主播一区二区三区| 亚洲乱码视频| 欧美与黑人午夜性猛交久久久| 亚洲欧洲日本国产| 亚洲一区二区三区视频| 亚洲国产三级在线| 亚洲欧美日韩网| 91久久线看在观草草青青| 亚洲一二三区在线观看| 亚洲成人自拍视频| 亚洲专区国产精品| 日韩视频在线观看| 久久精品91久久久久久再现| 一本色道88久久加勒比精品| 欧美一区二区三区四区在线| 欧美韩日一区二区| 国产精品有限公司| 亚洲精品久久久久| 黄网站免费久久| 亚洲婷婷综合久久一本伊一区| 亚洲国产精品一区二区第四页av | 另类专区欧美制服同性| 亚洲在线第一页| 欧美国产视频在线| 男人天堂欧美日韩| 国产综合在线视频| 亚洲欧美资源在线| 亚洲欧美日韩一区在线观看| 欧美日韩高清在线| 亚洲黄色免费电影| 亚洲电影中文字幕| 久久精品国产免费看久久精品| 亚洲天堂av图片| 欧美日韩1区2区3区| 亚洲国产精品女人久久久| 在线成人激情黄色| 久久久精品国产一区二区三区| 香港成人在线视频| 国产精品乱码人人做人人爱| 一本久道久久综合狠狠爱| 99re6这里只有精品| 欧美激情一区二区三区全黄| 欧美激情亚洲一区| 亚洲精品在线免费观看视频| 欧美r片在线| 亚洲黄页视频免费观看| 日韩天天综合| 欧美日产国产成人免费图片| 亚洲每日更新| 亚洲综合日韩中文字幕v在线| 国产精品a级| 亚洲欧美另类综合偷拍| 欧美在线欧美在线| 国内揄拍国内精品少妇国语| 久久裸体艺术| 91久久国产综合久久91精品网站| 99国产精品久久久| 国产精品久久久久久久久久ktv | 亚洲欧美日韩国产成人| 国产精品久久一区主播| 欧美亚洲日本国产| 欧美大胆a视频| 99综合在线| 国产精品视频久久一区| 欧美有码在线观看视频| 欧美高清hd18日本| 一本大道久久a久久精品综合| 欧美日韩一区二区免费视频| 亚洲免费在线精品一区| 蜜桃av久久久亚洲精品| 艳妇臀荡乳欲伦亚洲一区| 国产精品久久久久久户外露出 | 美女免费视频一区| 欧美大胆a视频| 欧美一级专区| 狠狠做深爱婷婷久久综合一区| 理论片一区二区在线| 一区二区毛片| 久久综合久久久| 99伊人成综合| 国产日韩欧美亚洲| 欧美绝品在线观看成人午夜影视| 亚洲婷婷国产精品电影人久久 | 亚洲精品乱码视频| 欧美制服丝袜| 亚洲精品国产精品乱码不99按摩 | 国产精品va| 久久综合伊人77777麻豆| 一区二区三区回区在观看免费视频| 久久精品99国产精品日本| 99热在线精品观看| 樱花yy私人影院亚洲| 国产精品高潮视频| 欧美1级日本1级| 欧美在线网站| 在线亚洲精品福利网址导航| 亚洲电影免费在线| 久久亚洲综合网| 亚洲一区二区三区在线看| 亚洲国产精品久久| 国一区二区在线观看| 国产精品a级| 欧美另类在线播放| 免费成人av在线看| 久久女同精品一区二区| 午夜精品福利一区二区三区av| 日韩视频一区二区三区在线播放| 欧美 日韩 国产精品免费观看| 久久精品亚洲一区| 性欧美暴力猛交69hd|