C#调用F#函数实现快速的快排操作

首先要使用F#实现一个模块,里面定义一个方法实现快排操作,具体代码如下:

module FsModule
let rec quickSorts=function
|[]->[]
|first::rest->
    let smaller,larger=List.partition((>=) first) rest
    List.concat [quickSorts smaller;[first];quickSorts larger]

从上述的代码中可以看出,充分利用的F#的函数式编程的特性,将复杂的快排在6行代码内实现,不仅简短,而且易于理解,和现实中数学方法相似;

其次是在C#中的方法中调用该方法,代码如下:

       public void Test1()
        {

            var x = FsModule.Swap(23, 46);
            Console.WriteLine(x.Item1 + "     " + x.Item2);
            var list = new List { 4, 7, 9, 2, 4, 3, 6, 12, 43, 16, 17, 14, 32 };
            var aa = ListModule.OfSeq(list);
            FSharpList fsList = aa;
            var res = FsModule.quickSorts(fsList);
            foreach(var y in res)
            {
                Console.Write("  " + y);
            }
            Console.WriteLine();
            //Console.Read();

        }

1》首先实现一个List并初始化

2》调用 Microsoft.FSharp.Collections下的ListModule,OfSeq()函数将List类型转换为FS harp能够使用的FSharpList类型;

3》将转换后的集合传入F#定义的函数内进行快排;

4》对返回结果进行打印处理

 

转载于:https://my.oschina.net/u/2475253/blog/3101548

你可能感兴趣的:(c#)