当前位置: 移动技术网 > IT编程>开发语言>.net > C# 数组查找与排序实现代码

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

雷雨公路,伊朗男篮,搜旁网

1. 查找对象
复制代码 代码如下:

person p1 = new person( " http://www.my400800.cn " , 18 );
person p2 = new person( " http://www.my400800.cn " , 19 );
person p3 = new person( " http://www.my400800.cn " , 20 );
person[] persons = ... { p1, p2, p3 } ;
// 查找p2所在数组中的位置
array.indexof < person > (persons, p2);

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

person p1 = new person( " http://www.my400800.cn " , 18 );
person p2 = new person( " http://blog.my400800.cn " , 19 );
person p3 = new person( " http:// blog.my400800.cn/400电话 " , 20 );
person[] persons = ... { p1, p2, p3 } ;
person p4 = new person(p2.name, p2.age);
// 查找数组中与p4相同的元素所在的位置
array.indexof < person > (persons, p4);

但是,这种方法必需使person重载object的 equals 比较方法
复制代码 代码如下:

public override bool equals( object obj)
... {
person person = obj as person;
if (person == null ) return false ;
return ( this .name == person.name && this .age == person.age);
}

第二种按对象的值查找的方法
实现icomparabler接口
复制代码 代码如下:

public int compareto( object obj)
... {
person person = obj as person;
if (person == null )
throw new exception( " the method or operation is not implemented. " );
// 先从年龄开始比较
int ageresult = this .age.compareto(person.age);
if (ageresult == 0 )
... {
// 如果年龄相等在坐姓名比较
return this .name.compareto(person.name);
}
else
... {
return ageresult;
}
}

实现了icomparable接口后就可以使用array.binarysearch()进行查找了
复制代码 代码如下:

// 得到 person 在 persons 中有相同值的下标
// 如果多个相同的值,binarysearch将取最后
// 一个有相同值的数组下标
array.binarysearch < person > (persons, person);

注:使用array.binaryseach必须操作一个排序好的数组
3. 排序
只要对象实现了icomparable接口,就可以使用array中静态的方法sort进行排序
复制代码 代码如下:

// 必需使比较的对象实现icomparable接口
array.sort < person > (persons);

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网