- 博客(4)
- 收藏
- 关注
原创 数据结构学习:排序
1.已知一个算法时间复杂度最低的情况,那么就尽量让这种情况发生(如本文的希尔排序,正是尽可能让插入排序往n的量级去靠)2.和1类似,逆向思考,已经达到了较好的时间复杂度,那就避免坏情况的发生(如快速排序的三数取中法)3.利用/避免偶然情况,如快速排序的随机取数,不一定会优化时间复杂度,但是很好地避免了整段或某段区间正序/逆序的极端情况(可以试想一下对一个完全有序的数组进行快排简直是灾难)
2025-06-18 20:04:02
916
原创 数据结构学习:二叉树
向下调整,从最后一个子树开始往前向下调整(一层层调好),保证每次向下调整时左右子树都是堆(向上和向下都是要满足这个条件的,刚刚向上调整也是相当于一层层调成了堆)(n,直觉上市n*logn,用错位相减法证明,直接想的话,因为向下调整忽略最后一层,向上调整忽略第一层,明显数量上差距就很大;根节点一定是最大的,因此让根节点和末尾节点交换,交换后的根节点向下调整,再次将第二大的数置于根节点,同时末尾节点必然不会动(第一大)。先一直走左孩子,当前的左孩子没有孩子时走其右兄弟,走完后再走自己的右兄弟,即可保证走完。
2025-05-07 18:37:23
904
原创 利用qsort函数实现对结构体数组的排序
两点需注意:由于name是字符串数组,在比较时正好可以用上strcmp(返回值正好契合了qsort需要的返回值)此外,需要注意(inf*)a后面不能直接跟->,不然a会先于->结合导致错误。而con->data会根据名字大小以一个inf结构体为单位进行排序。qsort中的参数compare函数的两个参数必须是name,而由于compare的默认参数类型是const void*,必须强制类型转换。利用qsort的一个大前提是得给他一个数组,因此设置了set结构体,将inf类型变量放入一个数组中。
2024-11-10 14:03:39
214
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人