数据结构完结咯
♥☺十五、第十五节 二叉排序树
- 对无序的顺序存储结构进行查找,例子
- 二叉排序树:又称二叉查找树,它或者是一棵空树,或者是具有下列性质的二叉树:
- 若他的左子树不为空,则左子树上所有结点的值均小于它的根结构的值;
- 若它的右子树不为空,则右子树上所有结点的值均大于它的根结构的值;
- 它的左右子树也分别为二叉排序树(递归)
- 平衡二叉排序树:前提是二叉排序树,且左子树右子树深度之差的绝对值不超过1。
哪个结点不合理(不满足相减小于1),就对该节点所在子树进行旋转,对树进行+1右旋转 -1左旋转
♥☺十六、第十六节 查找法
- 散列表(哈希表)查找:散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key).
这里,把这种对应关系f称为散列函数,又称为哈希函数(hash)。采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间成为散列表或者哈希表(hash table)
尽量不要有冲突,即key1!=key2,f(key1)=f(key2),是不可以的。
- 排序算法
- 冒泡排序:基本思想:两两相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。时间复杂度O(n^2)
- 选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换。时间复杂度O(n^2)
- 直接插入排序:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。
- 堆排序(选择排序的改进):与完全二叉树相关,大顶堆,小顶堆,即根结点是所有结点最大或最小者
- 归并排序:时间复杂度O(nlogn)
- 快速排序:每一趟排序指定一个基准点,小于基准点放在左边,大于基准点放在右边;时间复杂度O(nlogn)