![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构及算法
steven_oyj
这个作者很懒,什么都没留下…
展开
-
堆和栈的区别
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(stati原创 2009-10-18 16:01:00 · 417 阅读 · 0 评论 -
各种排序方法的综合比较
各种排序方法的综合比较 结论: 排序方法 平均时间 最坏时间 辅助存储 简单排序 O(n2) O(n2) O(1) 快速排序 O(nlogn) O(n2) O(logn) 堆排序 O(nlogn) O(nlogn) O(1) 归并排序 O(nlogn) O(nlogn) O(n) 基数排序 O(d(n+rd)) O(d(n+rd)) O(r原创 2009-10-18 16:02:00 · 503 阅读 · 0 评论 -
各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。 直接插入排序:O(n*n) 选择排序:O(n*n) 快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最原创 2009-10-18 16:07:00 · 499 阅读 · 0 评论 -
树和二叉树
一、树 树的组成:根和子树 树的结点包含:一个数据元素,以及若干指向其子树的分支。 结点的度:该结点说拥有的子树个数(即指向其子树的分支条数)。 叶子或终端结点:度为0的结点 分支结点或非终端结点:度不为0的结点 内部结点:除根结点外的分支结点 树的度:树内各结点的度的最大值 孩子结点:结点的子树的根结点,相应的该结点为孩子结点的父亲结点 兄弟结点:同一个父亲结点的孩子结点。 祖先结点:从根到该结原创 2009-12-24 16:26:00 · 542 阅读 · 0 评论