<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JUST DO IT ~

    我只想當個程序員

    C# ArrayList.BinarySearch 小問題 --- 必須是按順序存儲 才可以這樣 查找

    ArrayList.BinarySearch (Object) 使用默認的比較器在整個已排序的 ArrayList 中搜索元素,并返回該元素從零開始的索引。

    ArrayList.BinarySearch (Object, IComparer) 使用指定的比較器在整個已排序的 ArrayList 中搜索元素,并返回該元素從零開始的索引。
    ArrayList.BinarySearch (Int32, Int32, Object, IComparer) 使用指定的比較器在已排序 ArrayList 的某個元素范圍中搜索元素,并返回該元素從零開始的索引。

    由 .NET Compact Framework 支持。



    ---強調一點 。因為是 2分查找。所以必須是 按照順序存放值, 否則出錯。

    有2個方式實現 IComparer  和 類自己 實現一個接口 system 中的

    D:\c_\arraylist>Test
     person  CompareTo(object obj)  this person is 4 -- objthis person is 3
     person  CompareTo(object obj)  this person is 2 -- objthis person is 3
     person  CompareTo(object obj)  this person is 104 -- objthis person is 3
    find   person p3 = new person(3); -3   比較后得不到結果 嚴重問題
    -----
     person  CompareTo(object obj)  this person is 4 -- objthis person is 5
    find   person p3 = new person(3); 6
    -----
     person  CompareTo(object obj)  this person is 4 -- objthis person is 1
     person  CompareTo(object obj)  this person is 2 -- objthis person is 1
      find  person p1 = new person(1);  0
    -----
     person  CompareTo(object obj)  this person is 4 -- objthis person is 104
     person  CompareTo(object obj)  this person is 5 -- objthis person is 104
     person  CompareTo(object obj)  this person is 1 -- objthis person is 104
     person  CompareTo(object obj)  this person is -88 -- objthis person is 104
      find      person p6 = new person(104); -10  -- 比較后得不到結果 嚴重問題
    0 this person is 1
    1 this person is 2
    2 this person is 104
    3 this person is 3
    4 this person is 4
    5 this person is 122
    6 this person is 5
    7 this person is 1
    8 this person is -88




    using System;
    using System.Collections; 
    using System.Collections.Generic;

    public class Test
    {

        
    public class person : IComparable
        
    {
            
    public int age = 0;
            
    public person(int i)
            
    {
                
    this.age = i;

            }

            
    public override string ToString()
            
    {

                
    return "this person is " + age;

            }


            
    public int CompareTo(object obj)
            
    {

                Console.WriteLine(
    " person  CompareTo(object obj)  " + this.ToString() + " -- obj" + obj.ToString());

                
    if (obj is person)
                
    {
                    person temp 
    = (person)obj;

                    
    return  age.CompareTo(temp.age);
                }


                
    throw new ArgumentException("object is not a CompareTo ");
            }




        }


        
    public static void Main(string[] args)
        
    {
           



            ArrayList list 
    = new ArrayList(300);

            
            person p1 
    = new person(1);
            person p2 
    = new person(2);
            person p3 
    = new person(3);
            person p4 
    = new person(4);
            person p5 
    = new person(5);
            person p0 
    = new person(-88);


            person p6 
    = new person(104);
            person p7 
    = new person(122);


          
            list.Add(p1);
            list.Add(p2);
            list.Add(p6);

            list.Add(p3);
            list.Add(p4);
            list.Add(p7);

            list.Add(p5);
           list.Add(p1);
           list.Add(p0);


            
    /*

           Console.WriteLine(list[1]);
           list.Remove(1); //  1  will be object  for method input paramt 
           Console.WriteLine(list[1]);
           list.RemoveAt(1);
           Console.WriteLine(list[1]);
            
    */





           
    /*
            * 
            *  ArrayList list0 = new ArrayList(2);
                    
           list0.Add(new person(12));

            * list.AddRange(list0);
           Console.WriteLine(" 合并集合 AddRange  新的集合都在最后 " + list[2]);
           Console.WriteLine(" 老集合的包含的數量    --添加新的以用不修改老的集合 " + list0.Count);
           
    */




           Console.WriteLine(
    "find   person p3 = new person(3); " + list.BinarySearch(p3));

           Console.WriteLine(
    "-----");

           Console.WriteLine(
    "find   person p3 = new person(3); " + list.BinarySearch(p5));

           Console.WriteLine(
    "-----");


           Console.WriteLine(
    "  find  person p1 = new person(1);  " + list.BinarySearch(p1));

           Console.WriteLine(
    "-----");


           Console.WriteLine(
    "  find      person p6 = new person(104); " + list.BinarySearch(p6));



            
    for (int i = 0; i < list.Count; i++ )
            
    {
                Console.WriteLine(i 
    + " " + list[i].ToString() );


            }






        }




    }



    /*

    Summary:
    Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

    Parameters:
    x: The first object to compare.
    y: The second object to compare.

    Return Values:
    Value Condition Less than zero x is less than y. Zero x equals y. Greater than zero x is greater than y.

    Exceptions:
    System.ArgumentException: Neither x nor y implements the System.IComparable interface.-or- x and y are of different types and neither one can handle comparisons with the other.

    */

    class personIComparer : System.Collections.IComparer
    {

         
    public  int Compare(object x, object y)   {

             Test.person p1 
    = x as Test.person;
             Test.person p2 
    = y as Test.person; 

            
    if ( p1 == null ) {
               
    //??
          
            }

           
             
    if (p1.age ==  p2.age ){
                 
    return 0
             }
    else{
                 
    if (p1.age >  p2.age ) {

                     
    return 1;
                 }
    else{
                     
    return -1;
                 
                 }

             }
     


             
        }

     
    }






    /*








    public class Temperature : IComparable {
        /// <summary>
        /// IComparable.CompareTo implementation.
        /// </summary>
        public int CompareTo(object obj) {
            if(obj is Temperature) {
                Temperature temp = (Temperature) obj;

                return m_value.CompareTo(temp.m_value);
            }
            
            throw new ArgumentException("object is not a Temperature");    
        }

        // The value holder
        protected int m_value;

        public int Value {
            get {
                return m_value;
            }
            set {
                m_value = value;
            }
        }

        public int Celsius {
            get {
                return (m_value-32)/2;
            }
            set {
                m_value = value*2+32;
            }
        }
    }




    */




    posted on 2008-02-25 21:08 小高 閱讀(1651) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678

    統計

    常用鏈接

    留言簿(3)

    隨筆分類(352)

    收藏夾(19)

    關注的blog

    手冊

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩高清免费在线观看| 一级毛片完整版免费播放一区| 成全视频高清免费观看电视剧 | 亚洲精华国产精华精华液网站| 8x8×在线永久免费视频| 无码乱人伦一区二区亚洲| 大地影院MV在线观看视频免费 | 日本成年免费网站| 日韩亚洲Av人人夜夜澡人人爽| 久操免费在线观看| 亚洲色欲www综合网| 18勿入网站免费永久| 亚洲日韩精品国产一区二区三区 | 国产精品视频全国免费观看 | 亚洲视频在线观看网址| 美丽的姑娘免费观看在线播放| 免费国产一级特黄久久| 一级毛片在线免费播放| 亚洲欧洲日本在线| 亚洲精品V天堂中文字幕| 国产在线播放线91免费| 亚洲成人午夜电影| 在线观看免费高清视频| 99亚洲精品卡2卡三卡4卡2卡| 亚洲高清最新av网站| 成人免费777777被爆出| 中文字幕在线观看亚洲| 成人免费午夜视频| 国产无限免费观看黄网站| 久久久久久亚洲Av无码精品专口| 97碰公开在线观看免费视频| 最新亚洲人成无码网站| 亚洲AV午夜成人片| 免费电影在线观看网站| www免费插插视频| 亚洲黄色网址大全| 亚洲av无码天堂一区二区三区| 亚洲精品免费视频| 国产精品亚洲精品日韩动图| 亚洲成色WWW久久网站| 97人伦色伦成人免费视频|