我应该使用哪个内核库对eiffel中的集合进行排序?
在哪里可以找到排序示例?可以使用典型的气泡分类等吗?
任何带有agent的分类器也非常有用,可以避免不得不使用未使用PATH类实现的可比对象
我应该使用哪个内核库对eiffel中的集合进行排序?
在哪里可以找到排序示例?可以使用典型的气泡分类等吗?
任何带有agent的分类器也非常有用,可以避免不得不使用未使用PATH类实现的可比对象
库base_extension
提供了一个有效的SORTER
冒泡,快速和外壳排序算法的延迟类implementations。
它使用比较器对象对任意类型(不一定是COMPARABLE
类型)的元素进行比较。比较器接口的一种实现是AGENT_EQUALITY_TESTER
,您将代理传递给该接口,以确定一个对象是否小于另一个对象。
这里是一个示例,如何使用冒泡排序按其规范名称对路径进行排序:
sort_paths (a_paths: INDEXABLE [PATH,INTEGER])
local
l_sorter: SORTER [PATH]
do
create {BUBBLE_SORTER [PATH]} l_sorter.make
(create {AGENT_EQUALITY_TESTER [PATH]}.make (
agent (a_p1,a_p2: PATH): BOOLEAN
do
Result := a_p1.canonical_path < a_p2.canonical_path
end))
l_sorter.sort (a_paths)
end
现在,如果存在类型为paths
的路径ARRAYED_LIST [PATH]
的列表,则可以通过调用sort_paths (paths)
对其进行排序。