日期:2014-05-19  浏览次数:20768 次

如何 array 里面 找 array
大家好

大概这样的方程用两个array参数:targetarray,lookingfroarray,返回第二个在第一个里面的index?

index=     findmyindex(targetarray,lookingfroarray);


有没有写好的class   或者方法   ?  


------解决方案--------------------
原谅偶的智商。。

能不能再说清楚那么一点点。。。。
------解决方案--------------------
偶看不懂
------解决方案--------------------
笨点的方法, 只能遍历,比较,计数
------解决方案--------------------
建议楼主:使用 hashtable 或 索引器 是明智的选择!
因为你提出的是关于查询的问题,关于查询最好能设立键(key),根据键来查询值!

1.hashtable 能根据 key 的值来访问 value 存放的对象。
key=index value=targetArray

2.使用索引器示例。
public class TargetArray
{
private int _Name;
private string _Pwd;
public int Name
{
get{return _Name;}
set{_Name = value;}
}
public string Pwd
{
get{return _Pwd;}
set{_Pwd = value;}
}
}
public class LookingForArray
{
private ArrayList arr = new ArrayList();
public void Add(TargetArray pTA)
{
arr.Add(pTA);
}
//Update,Delete,Remove,Clear等方法省略,请自己写完
public TargetArray this[int index]
{
get{return (TargetArray)arr[index];}
}
}
------解决方案--------------------
就是一个数组是否包含另一个数组的所有元素吧
这样描述应该比较清晰吧,呵呵
楼主的array里的字母顺序是随机的吧
------解决方案--------------------
public int ArraySearch(Array AArray, Array ASubArray)
{
if (AArray == null || ASubArray == null) return -1;
if (AArray.GetType() != ASubArray.GetType()) return -1;
if (ASubArray.Length <= 0) return -1;
int i = 0;
for (int j = 0; j < AArray.Length; j++)
{
if (i > = ASubArray.Length - 1) return j - ASubArray.Length + 1;
if (AArray.GetValue(j).Equals(ASubArray.GetValue(i)))
i++;
else i = 0;
}
return -1;
}

private void button1_Click(object sender, EventArgs e)
{
int[] ia = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] ib = new int[] { 1, 2, 3 };
Console.WriteLine(ArraySearch(ia, ib)); // 1
char[] ca = new char[] { '0 ', '1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 ' };
char[] cb = new char[] { '8 ', '9 '};
Console.WriteLine(ArraySearch(ca, cb)); // 8
}