亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

比較高效地實現(xiàn)從兩個不同數(shù)組中提取相同部分組

系統(tǒng) 1780 0

????????有時候我們需要從兩個不同數(shù)組中提取出相同的部分的數(shù)組或者計算有多少個相同的項,這個算法剛好能派上用場,

實現(xiàn)方案:
1、將兩個數(shù)組按從小到大排序;
2、遍歷第一個數(shù)組 array1,跟第二個數(shù)組 array2 做比較;
3、如果找到相等的則提取出該數(shù)據(jù)并且記錄下 array2 的下標(biāo)到臨時變量 t,下次循環(huán)則從 array2[t+1] 開始遍歷 array2;
4、如果沒有匹配到相等的而且 array2[t] 大于與 array1 對比的數(shù)據(jù)時, 記下 array2 當(dāng)前下標(biāo)到臨時變量 t,下次循環(huán)則從 array2[t] 開始;

經(jīng)過測試,該算法比“最笨”的作法無法在數(shù)組以何種方式排序都要強,如果量越多會越明顯,有點可惜的是暫時只能使用在 Int[] 上,有時間再想一下其它數(shù)據(jù)類型的比較

獲取兩個整型數(shù)組中相等項的集合
<!----> 獲取兩個整型數(shù)組中相等項的集合 #region ??獲取兩個整型數(shù)組中相等項的集合

/**/ /// ? <summary>
/// ?獲取兩個整型數(shù)組中相等項的集合
/// ? </summary>
/// ? <param?name="array1"></param>
/// ? <param?name="array2"></param>
/// ? <returns></returns>

public ? static ? int []?CompareEquation( int []?array1,? int []?array2)
{
????
int ?i1,?i2;
????
// ?記錄第二個數(shù)組上一次匹配到的位置
???? int ?t? = ? 0 ;
????
// ?記錄相同的項
????List < int > ?equal? = ? new ?List < int > ();

????
int []?sort1? = ?BubbleSort(array1);
????
int []?sort2? = ?BubbleSort(array2);

????
for ?( int ?i? = ? 0 ;?i? < ?sort1.Length;?i ++ )
????
{
????????i1?
= ?sort1[i];

????????
for ?( int ?j? = ?t;?j? < ?sort2.Length;?j ++ )
????????
{
????????????i2?
= ?sort2[j];

????????????
if ?(i2? == ?i1)
????????????
{
????????????????equal.Add(i2);
????????????????
// ?下次比較從下一位開始
????????????????t? = ?j? + ? 1 ;
????????????}

????????????
else ? if ?(i2? > ?i1)
????????????
{
????????????????
// ?下次比較繼續(xù)從這里開始
????????????????t? = ?j;
????????????????
break ;
????????????}

????????}

????}


????
return ?equal.ToArray();
}


#endregion

冒泡法排序(非原創(chuàng))
<!----> 冒泡法排序(非原創(chuàng)) #region ?冒泡法排序(非原創(chuàng))

/**/ /// ? <summary>
/// ?冒泡法排序
/// ? </summary>
/// ? <returns> 排序結(jié)果:?從小到大(升序) </returns>
/// ? <see?cref="http://www.aspcool.com/lanmu/browse1.asp?ID=1223&bbsuser=csharp"/>

public ? static ? int []?BubbleSort( int []?R)
{
????
int ?i,?j,?temp;
????
// 交換標(biāo)志?
???? bool ?exchange;
????
// 最多做R.Length-1趟排序?
???? for ?(i? = ? 0 ;?i? < ?R.Length;?i ++ )
????
{
????????
// 本趟排序開始前,交換標(biāo)志應(yīng)為假?
????????exchange? = ? false ;
????????
for ?(j? = ?R.Length? - ? 2 ;?j? >= ?i;?j -- )
????????
{
????????????
// 交換條件?
???????????? if ?(R[j? + ? 1 ]? < ?R[j])
????????????
{
????????????????temp?
= ?R[j? + ? 1 ];
????????????????R[j?
+ ? 1 ]? = ?R[j];
????????????????R[j]?
= ?temp;
????????????????
// 發(fā)生了交換,故將交換標(biāo)志置為真?
????????????????exchange? = ? true ;
????????????}

????????}

????????
// 本趟排序未發(fā)生交換,提前終止算法?
???????? if ?( ! exchange)
????????
{
????????????
break ;
????????}

????}


????
return ?R;
}


#endregion

測試結(jié)果:



所謂的最笨的方法:

自我感覺最笨的作法
<!----> 計算兩個整型數(shù)組中數(shù)值相等的數(shù)量(最笨的方法) #region ?計算兩個整型數(shù)組中數(shù)值相等的數(shù)量(最笨的方法)

/**/ /// ? <summary>
/// ?計算兩個整型數(shù)組中數(shù)值相等的數(shù)量(最笨的方法)
/// ? </summary>
/// ? <param?name="array1"></param>
/// ? <param?name="array2"></param>
/// ? <returns></returns>

public ? static ? int []?CompareEquation1( int []?array1,? int []?array2)
{
????List
< int > ?equal? = ? new ?List < int > ();

????
foreach ?( int ?i1? in ?array1)
????
{
????????
foreach ?( int ?i2? in ?array2)
????????
{
????????????
if ?(i1? == ?i2)
????????????
{
????????????????equal.Add(i1);
????????????}

????????}

????}

????
return ?equal.ToArray();
}


#endregion

從圖中可以看到運行效率有了很大的提升,
以上只是不成熟的解決方案,歡迎各位一起來討論!

相關(guān)代碼下載

比較高效地實現(xiàn)從兩個不同數(shù)組中提取相同部分組成新的數(shù)組(只支持Int類型) [C#]


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲 在线播放 | 亚洲va国产va欧美va综合 | 亚洲国产成人精品久久 | 在线看片777av免费观看 | 人人看97| 真实子伦视频不卡 | 亚洲国产天堂久久精品网 | 欧美激情在线播放一区二区 | 99精品国产高清自在线看超 | 狠狠色欧美亚洲狠狠色五 | 色偷偷女人的天堂a在线 | 一级香蕉视频在线观看 | 久久中文字幕亚洲精品最新 | 亚洲骚片| 国产一级精品高清一级毛片 | 国产成人午夜精品5599 | 久久91综合国产91久久精品 | 老王午夜69精品影院 | 偷亚洲偷国产欧美高清 | 国产 欧美 日产中文 | 免费一级毛片在线观看 | 日韩黄色片 | 九九色影院 | 欧洲在线免费视频 | 亚洲精品久久久久福利网站 | 人成xxxwww免费视频 | 不卡视频在线播放 | 老师在办公室被躁到白浆 | 久久国产亚洲偷自 | 看日本真人一一级特黄毛片 | 综合在线视频精品专区 | 麻豆一区二区三区在线观看 | 波多野结衣二区 | 97视频免费在线 | a毛片免费观看 | 欧美成人毛片免费视频 | 国产午夜精品理论片久久影视 | 理论片 我不卡影院 | 老司机午夜网站 | 国产精品免费福利 | 国产探花视频在线观看 |