如何取出數組中符合某種條件的元素,然后放在數組最前面,即索引為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){//如果數組的長度為0if (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();}}
新聞熱點
疑難解答