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

比較高效地實現(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條評論
主站蜘蛛池模板: se999se男人最爱 | 日本一级作爱片在线观看 | 久国产精品视频 | 国产精品色片 | 色综合久久中文色婷婷 | 日韩欧美中| 99日韩| 久久久国产高清 | 欧美综合网| 伊人影院久久 | 九九99久久精品午夜剧场免费 | 亚洲狠狠婷婷综合久久久久网站 | 亚洲精品国产国语 | 国产精品欧美一区二区三区 | 欧美成人免费毛片 | 亚洲精品一区二区三区在 | 毛片a级放荡的护士hd | 久久久亚洲天堂 | 四虎影视免费看 | 欧美三级做爰在线 | 91精品国产综合久久久久久 | 亚洲二区视频 | 国产一级做a爱片久久毛片a | 成人午夜性视频欧美成人 | 四虎精品影院4hutv四虎 | 99re这里只有热视频 | 视频一区国产 | 快射视频在线观看 | 国产特黄 | 国产成人精品一区二区 | 国产欧美另类 | 免费国产阿v视频在线观看 免费国产不卡午夜福在线 免费国产不卡午夜福在线观看 | 免费国产a| 亚洲国产成人精品一区二区三区 | 久久夜色tv网站 | 欧美成人免费 | 人人干人人爱 | 东京干手机福利视频 | 欧美乱一级在线观看 | 欧美精品亚洲精品 | 91精品免费国产高清在线 |