首先要使用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》对返回结果进行打印处理