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

比較高效地實現從兩個不同數組中提取相同部分組

系統 2053 0

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

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

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

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

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

public ? static ? int []?CompareEquation( int []?array1,? int []?array2)
{
????
int ?i1,?i2;
????
// ?記錄第二個數組上一次匹配到的位置
???? 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)
????????????
{
????????????????
// ?下次比較繼續從這里開始
????????????????t? = ?j;
????????????????
break ;
????????????}

????????}

????}


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


#endregion

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

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

public ? static ? int []?BubbleSort( int []?R)
{
????
int ?i,?j,?temp;
????
// 交換標志?
???? bool ?exchange;
????
// 最多做R.Length-1趟排序?
???? for ?(i? = ? 0 ;?i? < ?R.Length;?i ++ )
????
{
????????
// 本趟排序開始前,交換標志應為假?
????????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;
????????????????
// 發生了交換,故將交換標志置為真?
????????????????exchange? = ? true ;
????????????}

????????}

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

????}


????
return ?R;
}


#endregion

測試結果:



所謂的最笨的方法:

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

/**/ /// ? <summary>
/// ?計算兩個整型數組中數值相等的數量(最笨的方法)
/// ? </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

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

相關代碼下載

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久草在线观看视频 | 日日天天干| 九九碰 | 香蕉视频禁止18 | 久艹在线观看视频 | 四虎影视精品永久免费 | 成人在线视频免费 | 免费欧美一级片 | 午夜影院免费体验区 | 亚洲国产天堂久久九九九 | 一区二区三区在线免费观看视频 | 91精品国产欧美一区二区 | 亚洲国产精品国产自在在线 | 欧美国产亚洲精品高清不卡 | 久久成人乱小说 | 奇米影视7777777 | 久一视频在线观看 | 亚洲天堂三区 | 色视频欧美 | 天天看片天天爽 | 99热久久国产精品这 | 6一10周岁毛片在线 717影院理论午夜伦八戒 | 精品国产自在久久 | 网友自拍视频悠悠在线 | 精品国产品香蕉在线 | 亚洲国产精品乱码在线观看97 | 国产成人综合95精品视频免费 | 91精品国产乱码在线观看 | 四虎影业| 成人免费午间影院在线观看 | 久久精品a| 五月婷婷综合激情 | 亚洲欧洲国产精品 | 日韩精品亚洲人成在线播放 | 欧美一级成人一区二区三区 | 在线播放国产一区二区三区 | 久久这里只有精品23 | 99色综合| 欧美国产精品不卡在线观看 | 久9久9精品视频在线观看 | 免费一级成人毛片 |