C#快速排序 (Linq实现的快速排序的泛型版本)

Linq泛型版:

        /// <summary>

        /// Linq实现的快速排序的泛型版本
        
/// </summary>
        
/// <typeparam name="T">限定参数类型为实现ICompareble接口的类型</typeparam>
        
/// <param name="list"></param>
        
/// <returns></returns>
        private IEnumerable<T> QuickSortingFunc<T>(IEnumerable<T> list) where T : IComparable<T>
        {
            if (list.Count() <= 1return list;

            var baseNumber = list.First();//取第一个元素为比较基数。

            return QuickSortingFunc(list.Where(x => x.CompareTo(baseNumber) < 0))  //把比basenumber小的元素都找出来,放在前面
                .Concat(list.Where(x => x.CompareTo(baseNumber) == 0))
                .Concat(QuickSortingFunc(list.Where(x => x.CompareTo(baseNumber) > 0))); //把比basenumber大的元素都找出来,放在后面,然后连接起来,递归调用该方法。
        }

  测试方法:

  public void TestMethod()
        {
            var list = new List<int> { 223311435512345213515153100532553243311531133 };

            List<int> resultList = QuickSortingFunc<int>(list).ToList<int>();

            resultList.ForEach(A => Console.Write(A+"")); //打印已排序的数组

            Console.ReadKey();
        }

转自:http://www.cnblogs.com/tianmaicheng/archive/2011/08/26/2154756.html 

 

 

posted @ 2012-02-23 17:51  nightmare23  阅读(529)  评论(1)    收藏  举报