C语言排序算法详解
1. 快速排序示例:目录列表
在分层文件系统中,文件通常按目录进行概念性组织。对于任何目录,我们可能希望查看该目录包含的文件和子目录列表。在Unix系统中,我们使用 ls
命令来实现这一功能;在Windows系统的命令提示符中,则使用 dir
命令。
1.1 directls函数
directls
函数实现了与 ls
命令相同的基本功能。它使用系统调用 readdir
来创建指定路径目录的列表。和默认情况下的 ls
命令一样, directls
会按名称对列表进行排序。由于在构建列表时使用 realloc
进行内存分配,调用者有责任在不再需要该列表时使用 free
释放其内存。
directls
的运行时复杂度为$O (n \lg n)$,其中$n$是要列出的目录中的条目数。这是因为检索$n$个目录条目总的运行时间为$O (n)$,而随后调用 qksort
对这些条目进行排序的时间复杂度为$O (n \lg n)$。
1.2 代码实现
1.2.1 头文件 directls.h
/********************************************