.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
关于Array.BinarySearch和Array.Sort

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

(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 ]




相关文章

相关软件