关于Array.BinarySearch和Array.Sort

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

(1)Array.BinarySearch(...)是否先对数组排序再搜索?

答案:否

代码:

using System;

namespace arraysort

{

class Item : IComparable

{

public int x;

public int y;

#region IComparable 成员

public Item(int x, int y)

{

this.x = x;

this.y = y;

}

public int CompareTo(object obj)

{

if ( obj is int )

return x.CompareTo( (int)obj);

throw new ArgumentException(" object is not a int!") ;

}

#endregion

}

class Class1

{

[STAThread]

static void Main(string[] args)

{

Item []myArray = new Item[5];

myArray[0] = new Item( 5, 20);

myArray[1] = new Item( 9, 6 );

myArray[2] = new Item(3, 6);

myArray[3] = new Item( 28, 2);

myArray[4] = new Item(4, 12);

int find = Array.BinarySearch( myArray, 3);

for (int i = 0; i< 5; i++)

{

System.Console.WriteLine("[ {0},{1} ]",((Item)myArray[i]).x ,((Item)myArray[i]).y );

}

if (i>=0)

System.Console.WriteLine("[ {0},{1} ]",((Item)myArray[find]).x ,((Item)myArray[find]).y );

}

}

}

output:

[ 5,20 ]

[ 9,6 ]

[ 3,6 ]

[ 28,2 ]

[ 4,12 ]

[ 3,6 ]

(2):实现Array.Sort, CompareTo()的实现和上面不同:

using System;

namespace arraysort

{

class Item : IComparable

{

public int x;

public int y;

#region IComparable 成员

public Item(int x, int y)

{

this.x = x;

this.y = y;

}

public int CompareTo(object obj)//参数是数组里面的元素

{

if ( obj is Item )

return x.CompareTo( ((Item)obj).x);

throw new ArgumentException(" object is not a int!") ;

}

#endregion

}

class Class1

{

[STAThread]

static void Main(string[] args)

{

Item []myArray = new Item[5];

myArray[0] = new Item( 5, 20);

myArray[1] = new Item( 9, 6 );

myArray[2] = new Item(3, 6);

myArray[3] = new Item( 28, 2);

myArray[4] = new Item(4, 12);

Array.Sort(myArray);

for (int i = 0; i< 5; i++)

{

System.Console.WriteLine("[ {0},{1} ]",((Item)myArray[i]).x ,((Item)myArray[i]).y );

}

}

}

}

output:

[ 3,6 ]

[ 4,12 ]

[ 5,20 ]

[ 9,6 ]

[ 28,2 ]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航