1、常见的数据结构:
1、数组:在内存中连续存储多个元素的结构,可以通过数组下标进行访问。
2、链表:物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现。
3、栈:后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等场景。
4、队列:先进先出(FIFO)的数据结构,常用于多线程编程中的任务调度。
5、树:如二叉树、红黑树、AVL树等,具有层次关系的集合,常用于高效查找和排序。
6、图:由节点和边组成的复杂数据结构,常用于表示网络结构。
7、哈希表:根据关键码直接进行访问的数据结构,可以实现快速查找。
2、常见的查找算法:
1、顺序查找:从列表的第一个元素开始,依次比较直到找到要查找的元素或搜索到最后一个元素。适用于数据量较小的列表。
2、二分查找:在有序序列中查找特定元素的算法,每次比较中间元素与目标值,缩小查找范围。适用于有序列表。
3、哈希查找:利用哈希函数将键转换为数组下标,直接在哈希表中查找元素。查找速度快,但可能存在哈希冲突。
3、常见的排序算法:
1、冒泡排序:通过相邻元素之间的比较和交换,使较大的元素逐渐“浮”到序列的末尾。
2、选择排序:每次从未排序部分中选择最小(或最大)元素,放到已排序部分的末尾。
3、插入排序:将未排序元素逐个插入到已排序部分中的适当位置。
4、归并排序:采用分治策略,将序列划分为若干个子序列,分别排序后再合并。
5、快速排序:通过选择一个基准元素,将序列划分为小于基准和大于基准的两部分,递归地对这两部分进行排序。
6、堆排序:利用堆的性质(父节点值大于或等于子节点值)进行排序,首先构建大顶堆或小顶堆,然后依次将堆顶元素与末尾元素交换并调整堆结构。