程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#把數組中的某個元素取出來放到第一個位置,

C#把數組中的某個元素取出來放到第一個位置,

編輯:C#入門知識

C#把數組中的某個元素取出來放到第一個位置,


如何取出數組中符合某種條件的元素,然後放在數組最前面,即索引為0的位置?

 

思路大致如下:
→找到符合條件的數組元素,把之賦值給一個臨時變量temp,並記下該數組元素的索引位置,假設是index
→在源數組中,從索引為0的數組元素開始,拷貝index個數組元素到另外一個目標數組
→把臨時變量temp賦值給目標數組索引為0的位置


    public static class ArrHelper
    {
        /// <summary>
        /// 對類型為T的數組進行擴展,把滿足條件的元素移動到數組的最前面
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="arr">源數組</param>
        /// <param name="match">lamda表達式</param>
        /// <returns></returns>
        public static bool MoveToFront<T>(this T[] arr, Predicate<T> match)
        {
            //如果數組的長度為0
            if (arr.Length == 0)
            {
                return false;
            }
            //獲取滿足條件的數組元素的索引
            var index = Array.FindIndex(arr, match);
            //如果沒有找到滿足條件的數組元素
            if (index == -1)
            {
                return false;
            }
            //把滿足條件的數組元素賦值給臨時變量
            var temp = arr[index];
            Array.Copy(arr, 0, arr, 1, index);
            arr[0] = temp;
            return true;
        }
        public static void PrintArray<T>(T[] arr)
        {
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
    }

 

以上,是針對泛型數組的擴展,所以可以直接使用數組實例調用擴展方法。

 

    class Program
    {
        static void Main(string[] args)
        {
            int[] intArr = new int[]{1, 2, 3, 4, 5};
            ArrHelper.PrintArray(intArr);
            intArr.MoveToFront(i => i == 3);
            ArrHelper.PrintArray(intArr);
            Console.ReadKey();
        }
    } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved