zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#数组查找与排序实现代码

c#数组排序代码 实现 查找
2023-06-13 09:14:13 时间
1.查找对象
复制代码代码如下:

Personp1=newPerson("http://www.my400800.cn",18);
Personp2=newPerson("http://www.my400800.cn",19);
Personp3=newPerson("http://www.my400800.cn",20);
Person[]persons=...{p1,p2,p3};
//查找p2所在数组中的位置
Array.IndexOf<Person>(persons,p2);

2.查找值
复制代码代码如下:

Personp1=newPerson("http://www.my400800.cn",18);
Personp2=newPerson("http://blog.my400800.cn",19);
Personp3=newPerson("http://blog.my400800.cn/400电话",20);
Person[]persons=...{p1,p2,p3};
Personp4=newPerson(p2.Name,p2.Age);
//查找数组中与p4相同的元素所在的位置
Array.IndexOf<Person>(persons,p4);

但是,这种方法必需使Person重载Object的Equals比较方法
复制代码代码如下:
publicoverrideboolEquals(objectobj)
...{
Personperson=objasPerson;
if(person==null)returnfalse;
return(this.name==person.name&&this.age==person.age);
}

第二种按对象的值查找的方法
实现IComparabler接口
复制代码代码如下:
publicintCompareTo(objectobj)
...{
Personperson=objasPerson;
if(person==null)
thrownewException("Themethodoroperationisnotimplemented.");
//先从年龄开始比较
intageResult=this.age.CompareTo(person.age);
if(ageResult==0)
...{
//如果年龄相等在坐姓名比较
returnthis.name.CompareTo(person.name);
}
else
...{
returnageResult;
}
}

实现了IComparable接口后就可以使用Array.BinarySearch()进行查找了
复制代码代码如下:
//得到person在persons中有相同值的下标
//如果多个相同的值,BinarySearch将取最后
//一个有相同值的数组下标
Array.BinarySearch<Person>(persons,person);

注:使用Array.BinarySeach必须操作一个排序好的数组
3.排序
只要对象实现了IComparable接口,就可以使用Array中静态的方法Sort进行排序
复制代码代码如下:
//必需使比较的对象实现IComparable接口
Array.Sort<Person>(persons);