数据结构与算法
Leonc.
For Freedom
展开
-
算法时间复杂度中O(logN)的底数是多少
算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定。如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然。不过无论底数是什么,log级别的渐进意义是一样的。也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的。我们先考虑O(logx(n))和O(logy(n)),x!=y,我们是在考虑n趋于无穷的情况。求当n趋于无穷大时logx(n)/lo原创 2017-09-12 20:06:26 · 6102 阅读 · 0 评论 -
二叉树的递归和非递归实现前序、中序、后序、层次遍历
#include <iostream>#define _CRT_SECURE_NO_WARNINGS#define STACK_SIZE 100#define QUEUE_SIZE 100typedef struct Btree { char data; struct Btree* lChild; struct Btree* rChild;}Btree, *P...原创 2019-08-04 01:28:41 · 531 阅读 · 0 评论 -
快速排序-时间复杂度和空间复杂度优化-三者取中-尾递归
快速排序虽好,但是特殊场景下(如数据有序出现)时间复杂度和空间复杂度会双双爆炸至n^2,导致排序时间过长和栈溢出崩溃。因此需要对代码进行优化。时间复杂度优化:使用三者取中的方法可以有效降低最坏情况下的时间复杂度。三者取中的意思,就是将枢轴的值设置为 A[low] 、A[(low + high)/2] 、A[high] 中的中间值。空间复杂度优化使用尾递归优化+两者取短,可以将最坏情况下...原创 2019-08-14 22:14:34 · 3409 阅读 · 1 评论