| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构复习 -> 正文阅读 |
|
[数据结构与算法]数据结构复习 |
前言临时抱佛脚… 二叉树度数为0的结点(叶子) 数量比度数为2的结点数量多一个。 排序算法完整代码请查看 排序类完整代码 冒泡排序(1)基本思想: 从前往后(或从后往前)两两比较相邻元素的值,若为逆序,则交换他们,直到序列比较完
(2) 时间效率:
(3) 空间复杂度
O
(
1
)
O(1)
O(1) 快速排序基本思想: 在待排序表中任取一个元素pivot作为枢轴, 通过一趟排序将排序表分成两个部分 1…k-1, k + 1…n
这里也给出非递归写法
(2) 时间复杂度:
(简单)选择排序(1) 基本思想
(2) 时间复杂度:平均情况
O
(
n
2
)
O(n^2)
O(n2) 堆排序(1) 基本思想: 可以借助一个大根堆或者小根堆,然后从堆中取出元素一次放入表中即可。
关于堆的实现可看这篇: 最小堆c++实现 归并排序(1)基本思想: 先拆分,再两两合并
(2) 时间复杂度:
O
(
n
l
o
g
2
n
)
O(nlog_2 n)
O(nlog2?n) 基数排序(1) 基本思想:不急于比较和移动进行排序, 而基于关键字各位的大小。
(2) 时间复杂度:
O
(
d
(
n
+
r
)
)
O(d(n + r))
O(d(n+r)), d是趟数,即d个关键字,r是队列数 直接插入排序(1) 基本思想:将整个数组a分为有序和无序的两个部分。开始有序的部分只有a[0] , 其余都属于无序的部分。每次取出无序部分的第一个(最左边)元素,把它加入有序部分。假设插入合适的位置p,则原p位置及其后面的有序部分元素都向右移动一个位置,有序的部分即增加了一个元素。一直做下去,直到无序的部分没有元素。
(2) 时间复杂度:
O
(
n
2
)
O(n^2)
O(n2) 希尔排序(1) 基本思想: 直接插入排序可能插入后需要移动很多单元。因此希尔排序觉得不如减少元素移动的次数,即移动步伐大一些。这里在此借鉴一下其他博主的 希尔排序的基本思想:
(2) 时间复杂度:
O
(
n
l
o
g
2
n
)
O(nlog_2 n)
O(nlog2?n) ~
O
(
n
2
)
O(n^2)
O(n2) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:45:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |