示例#1
0
        /// <summary>
        /// Laufzeit: O(n)
        /// Methode IntervallpunktSucheLinear() sucht in einer nach RangeVon aufsteigend sortierten Liste
        /// von metrischen Intervallpunkten
        /// den Intervallpunkt bei dem die übergebene Ausprägung GrößerGleich dessen RangeVon ist
        /// und die Ausprägung kleiner dessen folgenden Intervallpunktes ist - und gibt den
        /// gefundenen Intervallpunkt zurück
        /// </summary>
        /// <param name="scaleNominal"></param>
        /// <param name="spec"></param>
        /// <returns></returns>
        public static IntervalPointMetric IntervalPointLinearSearch(List <IntervalPointMetric> SkalaMetrisch, decimal Auspraegung)
        {
            IntervalPointMetric predecessor = null;

            foreach (IntervalPointMetric r in SkalaMetrisch)
            {
                if (predecessor != null && r.RangeStart > Auspraegung)
                {
                    if (Auspraegung >= predecessor.RangeStart)
                    {
                        return(predecessor);
                    }
                    else
                    {
                        return(null);
                    }
                }
                predecessor = r;
            }
            if (Auspraegung >= predecessor.RangeStart)
            {
                return(predecessor);
            }
            return(null);
        }
示例#2
0
        /// <summary>
        /// Laufzeit: O(log*n)
        /// sucht in einer nach RangeVon aufsteigend sortierten Liste
        /// von metrischen Intervallpunkten
        /// den Intervallpunkt bei dem die übergebene Ausprägung GrößerGleich dessen RangeVon ist
        /// und die Ausprägung kleiner dessen folgenden Intervallpunktes ist - und gibt den
        /// gefundenen Intervallpunkt zurück
        /// </summary>
        /// <param name="scaleMetric"></param>
        /// <param name="spec"></param>
        /// <returns></returns>
        public static IntervalPointMetric IntervalPointBinarySearch(List <IntervalPointMetric> scaleMetric, decimal spec)
        {
            IntervalPointMetric result = null;
            IntervalPointMetric nr     = new IntervalPointMetric(spec);
            int i = scaleMetric.BinarySearch(nr);

            if (i < 0)
            {
                i = (int)(~i - 1);
            }
            if (i >= 0)
            {
                result = scaleMetric[i];
            }
            return(result);
        }