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

隨筆 - 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>
            一区二区免费在线观看| 午夜免费日韩视频| 99国产麻豆精品| 韩国在线一区| 在线播放日韩专区| 亚洲国产美女精品久久久久∴| 极品日韩av| 亚洲国产专区校园欧美| 91久久精品国产| 日韩亚洲欧美一区二区三区| 99精品99| 欧美在线一二三四区| 久久久久久综合| 亚洲电影自拍| 亚洲激情偷拍| 亚洲一区二区视频在线观看| 亚洲男人av电影| 久久久精品久久久久| 久久综合久久美利坚合众国| 欧美久久精品午夜青青大伊人| 国产精品成人一区二区三区夜夜夜| 国产乱码精品一区二区三| 韩国一区二区三区美女美女秀| 亚洲人永久免费| 午夜精品剧场| 欧美黑人在线观看| 亚洲午夜激情| 另类图片国产| 国产毛片精品国产一区二区三区| 在线日韩中文字幕| 亚洲欧美卡通另类91av| 欧美xx视频| 亚洲自拍偷拍福利| 欧美黄色免费网站| 黄色成人免费观看| 亚洲婷婷综合久久一本伊一区| 久久久久女教师免费一区| 亚洲日本中文字幕| 久久激情网站| 国产精品美女| 亚洲精品日本| 麻豆久久婷婷| 亚洲亚洲精品在线观看| 免费一级欧美在线大片| 国产农村妇女毛片精品久久麻豆| 亚洲人成网站777色婷婷| 久久福利影视| 亚洲一区精彩视频| 国产偷久久久精品专区| 欧美深夜福利| 亚洲国产中文字幕在线观看| 午夜天堂精品久久久久| 亚洲精品一区中文| 免费久久99精品国产| 国产综合av| 久久精彩视频| 欧美一区二区三区在线观看视频| 欧美视频免费在线| 一区二区激情视频| 亚洲美女区一区| 欧美精品 日韩| 亚洲免费观看高清在线观看| 欧美高清视频免费观看| 久久影音先锋| 91久久久在线| 最新精品在线| 欧美日韩免费高清一区色橹橹| 亚洲另类黄色| 99国产精品久久久久久久成人热| 欧美日韩一区二区三区| 国产精品99久久久久久久久 | 国产亚洲欧美一区二区| 先锋影音一区二区三区| 在线亚洲免费| 国产欧美精品一区二区三区介绍| 欧美一区二区三区成人| 羞羞视频在线观看欧美| 国产一区二区日韩精品| 米奇777超碰欧美日韩亚洲| 久久综合九色九九| 亚洲免费观看视频| 亚洲一级黄色av| 国产综合欧美| 亚洲福利av| 欧美日韩三区| 久久精品亚洲一区二区| 久久综合伊人77777蜜臀| 最新中文字幕一区二区三区| 亚洲精品国产精品国自产观看| 欧美日韩中文字幕在线| 欧美中文字幕第一页| 久久天天躁夜夜躁狠狠躁2022| 最新国产成人在线观看| 亚洲视频福利| 永久91嫩草亚洲精品人人| 亚洲电影免费在线| 国产精品一区二区三区观看| 久久嫩草精品久久久精品一| 欧美国产欧美综合| 欧美一区二区三区精品电影| 米奇777超碰欧美日韩亚洲| 亚洲免费影院| 欧美va亚洲va香蕉在线| 亚洲欧美欧美一区二区三区| 久久久在线视频| 亚洲欧美综合另类中字| 猛干欧美女孩| 久久精品免视看| 午夜在线播放视频欧美| 欧美一区二区三区在线视频| 亚洲国产成人不卡| 亚洲一二区在线| 日韩一级精品| 久久国产精品久久久| 亚洲一区二区三区免费观看| 老色批av在线精品| 久久精品九九| 国产精品理论片| 最新国产拍偷乱拍精品| 极品尤物久久久av免费看| 亚洲视频在线观看| 日韩午夜av| 久久网站免费| 久久噜噜亚洲综合| 国产欧美大片| 亚洲一区视频在线观看视频| 一本色道久久综合狠狠躁篇的优点| 久久精品中文字幕一区二区三区| 亚洲中字在线| 欧美日韩日韩| 亚洲精品乱码久久久久久日本蜜臀| 精品福利av| 久久久国产视频91| 久久久久久久久蜜桃| 国产日本精品| 亚洲专区欧美专区| 篠田优中文在线播放第一区| 欧美视频四区| 一区二区av在线| 亚洲一级黄色片| 国产精品久久久久永久免费观看 | 欧美国产精品劲爆| 亚洲电影自拍| 裸体丰满少妇做受久久99精品| 老司机成人网| 亚洲国产精品专区久久| 久久久久久穴| 亚洲第一福利在线观看| 亚洲国产va精品久久久不卡综合| 久久免费视频在线观看| 欧美成人免费播放| 亚洲全部视频| 欧美三级网址| 亚洲在线不卡| 久久综合99re88久久爱| 永久555www成人免费| 牛牛影视久久网| 一本色道久久加勒比88综合| 亚洲你懂的在线视频| 国产日韩一区二区| 久久综合伊人77777| 91久久在线视频| 欧美一区二区视频在线观看| 国产精品自拍视频| 久久久久综合| 亚洲精品中文字幕有码专区| 亚洲一本视频| 经典三级久久| 欧美日韩日韩| 久久久久免费视频| 亚洲精品乱码久久久久久黑人| 午夜在线成人av| 在线看欧美视频| 久久久久久69| 国产亚洲一区二区精品| 欧美亚洲综合另类| 欧美大胆成人| 亚洲综合成人婷婷小说| 黑人巨大精品欧美一区二区小视频 | 欧美三级电影网| 欧美在线视频免费播放| 最新日韩在线视频| 久久久欧美一区二区| 亚洲最快最全在线视频| 国产日韩专区| 欧美日韩一区二区国产| 久久亚洲视频| 午夜影院日韩| 一区二区三区欧美在线| 免费亚洲电影在线| 欧美一区二区精品在线| 亚洲精品色图| 一区二区三区在线免费观看| 欧美网站大全在线观看| 麻豆精品精华液| 久久久www| 久久国产精品久久久| 亚洲视频综合| a91a精品视频在线观看| 欧美不卡视频一区|