自编教材实操课程分享:第六章—典型数据结构的性能分析
先进编译实验室
2024年05月18日 08:00
收录于文集
共28篇


本文主要介绍典型数据结构的性能分析。实验环境是CentOS7 + GCC。

1. 优化方法简述

常用的数据存储结构有数组、栈、队列、链表、树、哈希表等等,这些数据结构有各自的优缺点,适用的场景也各不相同,这些数据结构优缺点可汇成如下表所示。从表中可以看出,数组适合用于数据量较小、且大小确定的情况。无序数组插入速度较快,有序数组查找速度较快,但数组元素在进行删除操作时,需要移动大量数据单元耗时较多等等。

执行效率较快的数据结构复杂程度一般较高,但并不是使用最快的结构就是最好的方案。仍需要根据实际情况进行考虑。不同数据结构的操作性能对比如下表所示。

2. 示例分析

选用数组、链表结构以查找数据为例进行测试并验证不同数据结构对完成相同操作而导致的程序性能差异。

在有序数组查找数据中,采用二分查找思想。假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功,返回1。否则利用中间位置记录,将表分为前后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到查找满足条件的记录,使查找成功,或直到子表不存在为止,此时查找失败,返回0。

在有序链表查找过程中,采用顺序查找。通过将目标元素与链表中每个元素进行对比,如果查找成功返回1,否则返回0。

运行命令:

(1)gcc BinarySearch.c –o BinarySearch

(2)./BinarySearch

(3)gcc SequentialSearch.c -o SequentialSearch

(4)./SequentialSearch

通过观察上面有序数组存储结构和有序链表存储结构的查找结果可以看出,在同样的需求下使用不同的数据结构,程序的性能表现相差较大。

3. 总结

常用的数据存储结构有数组、栈、队列、链表、树、哈希表等等,这些数据结构有各自的优缺点,适用的场景也各不相同。因此在选择合适的数据结构时,需要根据实际情况进行考虑。

4. 参考资料

(1)自编教材分享:第六章—程序编写优化(二) - 哔哩哔哩 (bilibili.com)​

(2)各种数据结构性能的比较 - the_tops - 博客园 (cnblogs.com)