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();
        }
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#求数组中元素全排列的方法

    本文实例讲述了C#求数组中元素全排列的方法.分享给大家供大家参考.具体如下: 1.算法描述 全排列的第一项是该数组的升序排列,最后一项是该数组的降序排列.本文中用到的了一个函数FindNextArray:从升序排列开始,不断使用函数FindNextArray,可以遍历全部排列,最终到达数组中元素的降序排列. FindNextArray函数的实现思路: 设有数组array为原数组的一个排列 1)找出数组的最大值 2)从后向前找:找到第一组array[i]>array[i-1]的数,以i位置为sig

  • C#实现AddRange为数组添加多个元素的方法

    本文实例讲述了C#实现AddRange为数组添加多个元素的方法.分享给大家供大家参考.具体实现方法如下: ArrayList ab = new ArrayList(); ab.Add("a"); //old fashioned way ab.Add("b"); ArrayList abcd = new ArrayList(); abcd.AddRange(new string[] {"a","b","c",

  • C#使用foreach语句搜索数组元素的方法

    本文实例讲述了C#使用foreach语句搜索数组元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码通过foreach语句对数组遍历,然后对元素进行逐个比较的方法来查找数组中的元素 using System; public class Search { public static void Main() { int[] nums = new int[10]; int val; bool found = false; // give nums some values for(int i =

  • C#使用linq语句查询数组中以特定字符开头元素的方法

    本文实例讲述了C#使用linq语句查询数组中以特定字符开头元素的方法.分享给大家供大家参考.具体如下: 下面的代码查询数组中以字母k开头的元素 using System; using System.Collections.Generic; using System.Linq; using System.Text; static void Main(string[] args) { string[] names = {"kaka","kunka","kuma

  • C#比较二个数组并找出相同或不同元素的方法

    本文实例讲述了C#比较二个数组并找出相同或不同元素的方法.分享给大家供大家参考,具体如下: string[] arr1 = new[] { "1", "2", "3", "4", "5" }; string[] arr2 = new[] { "1", "3", "5" }; var sameArr = arr1.Intersect(arr2).To

  • C#中数组初始化与数组元素复制的方法

    本文实例讲述了C#中数组初始化与数组元素复制的方法.分享给大家供大家参考.具体如下: 下面的代码演示如何创建和初始化数组,以及C#中如何将数组元素从一个复制到另外一个的方法. using System; public class ArraySample { public static void Main() { // 创建和初始化数组 int[] intArr = new int[5] {1,2,3,4,5}; Object[] objArr = new Object[5] {10,20,30,

  • C#实现将数组内元素打乱顺序的方法

    本文实例讲述了C#实现将数组内元素打乱顺序的方法.分享给大家供大家参考.具体如下: 1.泛型类代码 //泛型类 class Item<T> { T[] item; //构造函数 public Item(T[] obj) { item = new T[obj.Length]; for (int i = 0; i < obj.Length; i++) { item[i] = obj[i]; } } public Type ShowType() { return typeof(T); } //

  • C#不重复输出一个数组中所有元素的方法

    本文实例讲述了C#不重复输出一个数组中所有元素的方法.分享给大家供大家参考.具体如下: 1.算法描述 0)输入合法性校验 1)建立临时数组:与原数组元素一样.该步骤的目的是防止传入的原数组被破坏 2)对临时数组进行排序 3)统计临时数组共有多少个不同的数字.该步骤的目的是为了确定结果集数组的长度 4)建立结果集数组,只存放不同的数字 5)返回结果集 2.函数代码 /// <summary> /// 建立包含原数组内所有元素且元素间互不重复的新数组 /// </summary> //

  • C#把数组中的某个元素取出来放到第一个位置的实现方法

    本文实例讲述了C#把数组中的某个元素取出来放到第一个位置的实现方法.分享给大家供大家参考.具体分析如下: 如何取出数组中符合某种条件的元素,然后放在数组最前面,即索引为0的位置? 思路大致如下: ① 找到符合条件的数组元素,把之赋值给一个临时变量temp,并记下该数组元素的索引位置,假设是index ② 在源数组中,从索引为0的数组元素开始,拷贝index个数组元素到另外一个目标数组 ③ 把临时变量temp赋值给目标数组索引为0的位置 复制代码 代码如下: public static class

  • 将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例

    在神经网络计算过程中,经常会遇到需要将矩阵中的某些元素取出并且单独进行计算的步骤(例如MLE,Attention等操作).那么在 tensorflow 的 Variable 类型中如何做到这一点呢? 首先假设 Variable 是一个一维数组 A: import numpy as np import tensorflow as tf a = np.array([1, 2, 3, 4, 5, 6, 7, 8]) A = tf.Variable(a) 我们把我们想取出的元素的索引存到 B 中,如果我

  • java实现向有序数组中插入一个元素实例

    整理文档,搜刮出一个java实现向有序数组中插入一个元素,稍微整理精简一下做下分享 package cn.jbit.array; import java.util.*; public class Insert { public static void main(String[] args) { //字符排序 char[] chars = new char[9]; chars[0] = 'a'; chars[1] = 'c'; chars[2] = 'u'; chars[3] = 'b'; cha

  • java去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度. 要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作. 例如: 给出数组A=[1,1,2],你的函数调用之后必须返回长度length=2,并且A现在变成[1,2]. 输入 一个已排序的数组,例如[1,1,2]. 输出 返回数组新的长度,例如length=2. 快慢指针法 设置fast指针遍历数组,slow指针指向不重复元素的下一位. public static int remov

  • JavaScript去掉数组中的重复元素

    在写程序过程中,经常会遇到去除数组中重复元素的需求.要实现这个功能其实并不难. 我们可以用一个两重循环来实现,对于小的数组,这样做当然并无不妥. 但如果我们的数组比较大,里面的元素有上万个.那么用两重循环,效率是极为低下. 下面我们就用js的特性,编写一个高效去除数组重复元素的方法. 复制代码 代码如下: <script> function unique(data){ data = data || []; var a = {}; for (var i=0; i<data.length;

  • javascript中删除指定数组中指定的元素的代码

    函数如下: 复制代码 代码如下: foreach = function (obj, insp){ if(obj== null && obj.constructor != Array){ return []; } //obj是要处理的数组,obj==null 表示对象尚未存在:obj.constructor != Array 表示对象obj的属性的构造函数不是数组: //constructor属性始终指向创建当前对象的构造函数.两个条件均满足,则返回空数组[]: //下面对construct

  • 删除PHP数组中的重复元素的实现代码

    我们上一篇文章讲述了<如何删除PHP数组中头部,尾部,任意元素>,本文我们讲述通过 array_unique()函数删除数组中重复元素. array_unique()函数,将数组元素的值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名,就是删除数组中重复的元素, 语法格式如下: array arry_unique(array array) 参数 array 为输入的数组. 下面实例使 array_unique()函数删除数组中重复的元素,具体示例代码如下: <?php h

  • PHP删除数组中的特定元素的代码

    比如下面的程序: 复制代码 代码如下: <?php $arr = array('apple','banana','cat','dog'); unset($arr[2]); print_r($arr); ?> 程序运行结果: 复制代码 代码如下: Array ( [0] => apple [1] => banana [3] => dog ) 但是这种方法的最大缺点是没有重建数组索引,就是说,数组的第三个元素没了. 经过查资料后,原来PHP提供了这个功能,只不过很间接.这个函数是

  • php array_filter除去数组中的空字符元素

    除去数组中的空字符元素 复制代码 代码如下: <?php $str1_array=array('我们','','http://www.jb51.net','','1654',''); $str1_array=array_filter($str1_array); print_r($str1_array); ?> 显示结果: 复制代码 代码如下: Array ( [0] => 我们 [2] => http://www.jb51.net [4] => 1654 )

  • php array_walk 对数组中的每个元素应用用户自定义函数详解

    php array_walk 对数组中的每个元素应用用户自定义函数 array_walk 使用用户自定义函数对数组中的每个元素做回调处理 基本语法 bool array_walk ( array &$array , callable $funcname [, mixed $userdata = NULL ] ) 将用户自定义函数 funcname 应用到 array 数组中的每个单元. array_walk() 不会受到 array 内部数组指针的影响. array_walk() 会遍历整个数组

随机推荐