首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# 兩個數組按奇偶索引交織合並:正序與逆序交替取值算法實現

     編輯:程式設計疑難解答

C# 兩個數組按奇偶索引交織合並:正序與逆序交替取值算法實現

需求:兩個等長數組 a、b,合並為新數組 c,規則:偶數索引取 a[i] 再取 b[m-1-i],奇數索引取 b[m-1-i] 再取 a[i]。

算法邏輯

List MergeAlternate(int[] a, int[] b) {
    int m = a.Length;
    var c = new List(2 * m);
    for (int i = 0; i < m; i++) {
        if (i % 2 == 0) {
            c.Add(a[i]);
            c.Add(b[m - 1 - i]);
        } else {
            c.Add(b[m - 1 - i]);
            c.Add(a[i]);
        }
    }
    return c;
}

測試用例

int[] a = {1, 2, 3, 4};
int[] b = {10, 20, 30, 40};
// m=4
// i=0 (even): a[0]=1, b[3]=40
// i=1 (odd):  b[2]=30, a[1]=2
// i=2 (even): a[2]=3, b[1]=20
// i=3 (odd):  b[0]=10, a[3]=4
// 結果: [1, 40, 30, 2, 3, 20, 10, 4]

LINQ 一行寫法(進階)

var c = Enumerable.Range(0, m)
    .SelectMany(i => i % 2 == 0 
        ? new[]{a[i], b[m-1-i]} 
        : new[]{b[m-1-i], a[i]})
    .ToList();

擴展:泛型版本

List MergeAlternate(T[] a, T[] b) {
    // 同樣邏輯,類型參數化
}

掌握索引映射與奇偶分支,可靈活應對各類數組交織合並需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved