当前位置: 首页>>代码示例>>C#>>正文


C# IComparer类代码示例

本文整理汇总了C#中IComparer的典型用法代码示例。如果您正苦于以下问题:C# IComparer类的具体用法?C# IComparer怎么用?C# IComparer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


IComparer类属于命名空间,在下文中一共展示了IComparer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Sort

        /// <summary>
        /// Rearranges the array in ascending order, using the natural order.
        /// </summary>
        /// <param name="a">a the array to be sorted</param>
        public static void Sort(IComparable[] a, IComparer c = null)
        {
            //make sure we have the comparer passed by argument or create default
            IComparer comparer = c ?? Comparer<object>.Default;

            int N = a.Length;

            int h = 1;

            //3*x +1 -> 1, 4, 13, 40, 121, 364, ..
            while (h < N / 3)
            {
                h = 3 * h + 1;
            }

            while (h >= 1)
            {

                //h- sort array
                for (int i = h; i < N; i++)
                {
                    for (int j = i; j >= h && less(comparer, a[j], a[j - h]); j -= h)
                    {
                        exch(a, j, j - h);
                    }
                }

                Debug.Assert(isHsorted(a, comparer, h));
                h = h / 3;
            }

            Debug.Assert(isSorted(a, comparer));
        }
开发者ID:kostasgrevenitis,项目名称:algs4,代码行数:37,代码来源:Shell.cs

示例2: Sort

 public void Sort(
     int index,
     int count,
     IComparer comparer)
 {
     theList.Sort(index, count, comparer);
 }
开发者ID:rogue-bit,项目名称:Triton-Framework,代码行数:7,代码来源:SortedList.cs

示例3: AddSort

 public override void AddSort(object expr, IComparer comparer)
 {
     // sort makes sense only when we are dealing with a query that
     // returns a nodeset.
     Query evalExpr;
     string query = expr as string;
     if (query != null)
     {
         evalExpr = new QueryBuilder().Build(query, out _needContext); // this will throw if expr is invalid
     }
     else
     {
         CompiledXpathExpr xpathExpr = expr as CompiledXpathExpr;
         if (xpathExpr != null)
         {
             evalExpr = xpathExpr.QueryTree;
         }
         else
         {
             throw XPathException.Create(SR.Xp_BadQueryObject);
         }
     }
     SortQuery sortQuery = _query as SortQuery;
     if (sortQuery == null)
     {
         _query = sortQuery = new SortQuery(_query);
     }
     sortQuery.AddSort(evalExpr, comparer);
 }
开发者ID:Corillian,项目名称:corefx,代码行数:29,代码来源:CompiledXPathExpr.cs

示例4: ListViewColumnSorter

        public ListViewColumnSorter(IComparer comparer)
        {
            SortColumn = 0;
            SortOrder = SortOrder.Ascending;

            mComparer = comparer;
        }
开发者ID:NathanW2,项目名称:PhotoMapper,代码行数:7,代码来源:ListViewColumnSorter.cs

示例5: LastWriteTimeComparator

 // Methods
 public LastWriteTimeComparator(bool bAscending, IComparer subComparer)
 {
     this._IsAscending = true;
     this._InnerComparer = null;
     this.IsAscending = bAscending;
     this.InnerComparer = subComparer;
 }
开发者ID:jihadbird,项目名称:firespider,代码行数:8,代码来源:LastWriteTimeComparator.cs

示例6: TreeWithPointProvider

 public void TreeWithPointProvider(CustomPoint[] point, CustomPoint[] resultPoint, IComparer<CustomPoint> comparer)
 {
     var tree = new BinaryTree<CustomPoint>(point, comparer);
     var pointCompare = new PointComparer();
     var enumeratorBook = tree.Preorder().ToArray();
     CollectionAssert.AreEqual(enumeratorBook, resultPoint, pointCompare);
 }
开发者ID:ZheldakArtem,项目名称:EPAM.Summer.Day10-11.Zheldak,代码行数:7,代码来源:BinaryTreeTest.cs

示例7: create

 public static PersistentTreeSet create(IComparer comp, ISeq init)
 {
     PersistentTreeSet ret = new PersistentTreeSet(null, new PersistentTreeMap(null, comp));
     for (ISeq s = init; s != null; s = s.next())
         ret = (PersistentTreeSet)ret.cons(s.first());
     return ret;
 }
开发者ID:TerabyteX,项目名称:clojure-clr,代码行数:7,代码来源:PersistentTreeSet.cs

示例8: SortedCollection

 //==========================================================================================
 // Constructors
 //==========================================================================================
 /// <summary>
 /// Initializes a new instance of the <see cref="SortedCollection"/> class.
 /// </summary>
 /// <param name="comparer">An <see cref="IComparer"/> to use for the sorting.</param>
 protected SortedCollection(IComparer comparer)
     : base(new ArrayList())
 {
     Tracer.VerifyNonNullArgument(comparer, "comparer");
     this.comparer = comparer;
     this.list = (ArrayList)this.InnerCollection;
 }
开发者ID:sillsdev,项目名称:FwSupportTools,代码行数:14,代码来源:SortedCollection.cs

示例9: StockMessageFactory

 public StockMessageFactory(IStockRepository repoA, IStockRepository repoB, IComparer<Stock> comparer, char userInput)
 {
     _repoA = repoA;
     _repoB = repoB;
     _comparer = comparer;
     _userInput = userInput;
 }
开发者ID:atifMalik,项目名称:SolidPrinciplesDemo,代码行数:7,代码来源:StockMessageFactory.cs

示例10: SetOp

		private SetOp() { } // disable construction

		/// <summary>
		/// Computes union of two sorted sequences.
		/// </summary>
		/// <remarks>
		/// <para>Both set1 and set2 must be sorted in ascending order with respect to comparer.</para>
		/// <para>Union contains elements present in one or both ranges.</para>
		/// <para>Result is written to the output iterator one member at a time</para>
		/// 
		/// <para>Union differs from <see cref="Merge">Merge</see> for multisets.</para>
		/// 
		/// <para>If k equal elements are present in set1 and m elements equal to those k
		/// are present in set2,then k elements from set1 are included in the output, 
		/// followed by max(m-k, 0) elements from set2. The total of max(k,m) are
		/// added to the output. If you'd like to have m+k elements, use Merge function.
		/// </para>
		/// <para>Complexity: linear on combined number of items in both sequences</para>
		/// </remarks>
		/// <example>
		/// <para>set1 = { "a", "test", "Test", "z" }</para>
		/// <para>set2 = { "b", "tEst", "teSt", "TEST", "Z" }</para>
		/// <para>comparer is a case-insensitive comparer</para>
		/// <para>The following elements will be added to output:
		/// {"a", "b", "test", "Test", "TEST", "z" }</para>
		/// </example>
		public static void Union(IEnumerable set1, IEnumerable set2, IComparer comparer, IOutputIterator output) {
			IEnumerator enum1 = set1.GetEnumerator();
			IEnumerator enum2 = set2.GetEnumerator();

			bool have1 = enum1.MoveNext();
			bool have2 = enum2.MoveNext();

			while (have1 && have2) {
				int compare = comparer.Compare(enum1.Current, enum2.Current);

				if (compare < 0) {
					output.Add(enum1.Current);
					have1 = enum1.MoveNext();
				} else if (compare > 0) {
					output.Add(enum2.Current);
					have2 = enum2.MoveNext();
				} else {
					output.Add(enum1.Current);
					have1 = enum1.MoveNext();
					have2 = enum2.MoveNext();
				}
			}

			while (have1) {
				output.Add(enum1.Current);
				have1 = enum1.MoveNext();
			}

			while (have2) {
				output.Add(enum2.Current);
				have2 = enum2.MoveNext();
			}
		}
开发者ID:GodLesZ,项目名称:svn-dump,代码行数:59,代码来源:SetOp.cs

示例11: SorterBase

		/// <summary>
		/// Initializes a new instance of the SorterBase class with the specified 
		/// TableModel, Column index, IComparer and SortOrder
		/// </summary>
		/// <param name="tableModel">The TableModel that contains the data to be sorted</param>
		/// <param name="column">The index of the Column to be sorted</param>
		/// <param name="comparer">The IComparer used to sort the Column's Cells</param>
		/// <param name="sortOrder">Specifies how the Column is to be sorted</param>
		public SorterBase(TableModel tableModel, int column, IComparer comparer, SortOrder sortOrder)
		{
			this.tableModel = tableModel;
			this.column = column;
			this.comparer = comparer;
			this.sortOrder = sortOrder;
		}
开发者ID:marinehero,项目名称:ThinkAway.net,代码行数:15,代码来源:SorterBase.cs

示例12: GEPEnvironment

 /// <summary>
 /// 
 /// </summary>
 /// <param name="identifier"></param>
 /// <param name="state"></param>
 /// <param name="metricsEvaluator"></param>
 /// <param name="endCriteriaEvaluator"></param>
 /// <param name="getCallableGenes">Gets the IGEPGenes that can be called by the given IGEPGene.</param>
 public GEPEnvironment(IEnvironmentIdentifier identifier, IEnvironmentState state, 
     IMetricsEvaluator metricsEvaluator, IEndCriteriaEvaluator endCriteriaEvaluator,
     IComparer<IOrganism> organismValueComparer,
     ICallableGenesProvider callableGenesProvider)
     : base(identifier, state, metricsEvaluator, endCriteriaEvaluator, callableGenesProvider: callableGenesProvider, organismValueComparer: organismValueComparer)
 {
 }
开发者ID:RossHartmann,项目名称:Biological-AI,代码行数:15,代码来源:GEPEnvironment.cs

示例13: SortHelper

        // Helper method for sorting an ArrayList.  If the comparer is a SortFieldComparer,
        // use the cached-value approach to avoid excessive reflection.  For other 
        // comparers, sort the usual way
        internal static void SortHelper(ArrayList al, IComparer comparer)
        {
            SortFieldComparer sfc = comparer as SortFieldComparer; 
            if (sfc == null)
            { 
                // sort the usual way 
                al.Sort(comparer);
            } 
            else
            {
                // Sort with cached values.
                // Step 1.  Copy the items into a list augmented with slots for 
                // the cached values.
                int n = al.Count; 
                int nFields = sfc._fields.Length; 
                CachedValueItem[] list = new CachedValueItem[n];
                for (int i=0; i<n; ++i) 
                {
                    list[i].Initialize(al[i], nFields);
                }
 
                // Step 2. Sort the augmented list.  The SortFieldComparer will
                // fill in the slots as necessary to perform its comparisons. 
                Array.Sort(list, sfc); 

                // Step 3. Copy the items back into the original list, now in 
                // sorted order
                for (int i=0; i<n; ++i)
                {
                    al[i] = list[i].OriginalItem; 
                }
            } 
        } 
开发者ID:sjyanxin,项目名称:WPFSource,代码行数:36,代码来源:SortFieldComparer.cs

示例14: AreCollectionsEqual

        private static bool AreCollectionsEqual(ICollection expected, ICollection actual, IComparer comparer, ref string reason)
        {
            Assert.CheckParameterNotNull(comparer, "Assert.AreCollectionsEqual", "comparer", string.Empty, new object[0]);

            if (!object.ReferenceEquals(expected, actual))
            {
                if ((expected == null) || (actual == null))
                {
                    return false;
                }
                if (expected.Count != actual.Count)
                {
                    reason = (string)TestingResources.NumberOfElementsDiff;
                    return false;
                }
                IEnumerator enumerator = expected.GetEnumerator();
                IEnumerator enumerator2 = actual.GetEnumerator();
                for (int i = 0; enumerator.MoveNext() && enumerator2.MoveNext(); i++)
                {
                    if (0 != comparer.Compare(enumerator.Current, enumerator2.Current))
                    {
                        reason = (string)TestingResources.ElementsAtIndexDontMatch(i);
                        return false;
                    }
                }
                reason = (string)TestingResources.BothCollectionsSameElements;
                return true;
            }
            reason = (string)TestingResources.BothCollectionsSameReference(string.Empty);
            return true;
        }
开发者ID:jlyonsmith,项目名称:Toaster,代码行数:31,代码来源:CollectionAssert.cs

示例15: SortedList

 public SortedList()
 {
     this.keys = emptyArray;
     this.values = emptyArray;
     this._size = 0;
     this.comparer = new Comparer(CultureInfo.CurrentCulture);
 }
开发者ID:randomize,项目名称:VimConfig,代码行数:7,代码来源:SortedList.cs


注:本文中的IComparer类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。