在OpenCASCADE的Toolkit TKernel中有个排序包(Package SortTools),可以对整数和实数进行排序。排序方法有四种:堆排序、快速排序、希尔排序、直接插入排序。这几种排序方法都是静态方法,因此,可以用对象名调用,这时,将静态方法看作是某个名空间的一个函数。排序包中对应几种排序方法的几个类如下:
SortTools_HeapSortOfInteger ——》 整数的堆排序;
SortTools_HeapSortOfReal ——》实数的堆排序;
SortTools_QuickSortOfInteger ——》整数的快速排序;
SortTools_QuickSortOfReal ——》实数的快速排序;
SortTools_ShellSortOfInteger ——》整数的希尔排序;
SortTools_ShellSortOfReal ——》实数的希尔排序;
SortTools_StraightInsertionSortOfInteger ——》整数的直接插入排序;
SortTools_StraightInsertionSortOfReal ——》实数的直接插入排序;
以整数的快速排序为例,讲解排序工具包的用法。在SortTools_QuickSortOfInteger Class Reference中看到类SortTools_QuickSortOfInteger的排序函数为一个静态函数Sort,其声明为:
参数TheArray为等排序的数组;
参数Comp为用来比较数据中元素的类;
快速排序算法主要源代码如下:(若需要对算法进行理解,请参考数据结构与算法的相关书籍。)
使用快速排序方法的简单代码示例如下:
输出结果如下:
若使用C++的模板功能,就不会分成整数和实数两个类来区别对待啦。:-)
触类旁通,其它排序方法的使用都是类似的。可以结合数据结构与算法书中的排序内容来对排序算法进行深入理解。