public static int BinarySearch(List <EventInfo> _list, int _frame)
 {
     frame = _frame;
     if (instance_ == null)
     {
         instance_ = new SearchComparer();
     }
     return(_list.BinarySearch(null, instance_));
 }
示例#2
0
        private static void Find(
            IList <SWATHIndexerItem> results,
            SWATHIndexerItem[] items,
            SearchComparer comparer,
            int lo,
            int hi,
            double mz,
            double rt,
            double rtOffset)
        {
            //for (int i = lo; i <= hi; i++)
            //{
            //    int c = comparer.Invoke(items[i], mz, rt, rtOffset);

            //    if (c == 0)
            //    {
            //        results.Add(items[i]);
            //    }
            //}


            while (lo <= hi)
            {
                int mid = lo + ((hi - lo) >> 1);

                int c = comparer.Invoke(items[mid], mz, rt, rtOffset);

                if (c == 0)
                {
                    results.Add(items[mid]);
                    Find(results, items, comparer, lo, mid - 1, mz, rt, rtOffset);
                    Find(results, items, comparer, mid + 1, hi, mz, rt, rtOffset);
                    return;
                }

                if (c < 0)
                {
                    lo = mid + 1;
                }
                else
                {
                    hi = mid - 1;
                }
            }
        }
示例#3
0
        public IList <SWATHIndexerItem> Find(SearchComparer comparer, double mz, double rt, double rtOffset)
        {
            IList <SWATHIndexerItem> results = new List <SWATHIndexerItem>();

            return(Find(results, comparer, mz, rt, rtOffset));
        }
示例#4
0
 public IList <SWATHIndexerItem> Find(IList <SWATHIndexerItem> results, SearchComparer comparer, double mz, double rt, double rtOffset)
 {
     Find(results, items, comparer, 0, items.Length - 1, mz, rt, rtOffset);
     return(results);
 }