数据结构
Name_seven
Is life always this hard,or is it just when you're a kid?
Always like this. ---Leon
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
冒泡排序&选择排序
冒泡排序测试例子:5 2 1 6 4 7 9 0 8 3思路:冒泡排序通过从开始位置的元素两两比较后面的元素,找到最大值,放到数组的最后面。每次找到最大值,就将数组大小减1比较的两个数,如果前面的数比后面的数据大,就交换两个数,如果前面的数比较小,就不交换两个数。 (比较的思路容易和选择排序混淆)时间复杂度:平均:O(n^2) 每遍历一次数组,只能确定一个数的正确位置,因此n...原创 2019-10-02 17:25:51 · 313 阅读 · 0 评论 -
快速排序&堆排序
快速排序测试用例: 5 2 1 6 4 7 9 0 8 3思路:采用的分治算法,结合递归。1.选择一个基准值,把数组中比基准值大的数据放到基准值的右边,把比基准值小的元素放到左边。(这时,基准值被放在了正确的位置)2.对基准值左边的数组和右边的数组不但进行步骤1。3.递归的结束条件是小区间内没有数据或者数据只有一个。即 left>right 或者 left == right...原创 2019-10-02 17:36:01 · 346 阅读 · 0 评论 -
归并排序
归并排序例子: 5 2 1 6 4 7 9 0 8 3思路: 1.采用分治算法:将一个大区间,不断划分成小区间。当区间中只有一个数时, 对于该区间肯定是有序的,当区间中没有数时,区间也是有序的。 2.申请一块额外的空间用来存储排序后的内容。 3.将有序的小区间进行合并,保存到新申请的空间内。步骤: 1.申请空间,申请的空间大小为两个已经排序序列之和 2.设定两个指针,最初位...原创 2019-10-02 17:41:22 · 214 阅读 · 0 评论 -
插入排序&希尔排序
插入排序(直接插入排序)例子: 5 2 1 6 4 7 9 0 8 3思路:类似于扑克牌的整理手牌的过程。 当前元素依次和前面的数比较,如果比前面的数大,就交换这两个数的位置。 如果比前面的数要大或者相等,说明找到了自己的合适位置,插入即可。时间复杂度: O(n^2) n个数需要插入,每次插入需要比较n次空间复杂度: O(1) 稳定性: 稳定。void Inser...原创 2019-10-02 17:48:47 · 172 阅读 · 0 评论 -
数据结构二叉树常见面试题
题目:1. 求二叉树中的节点个数2. 求二叉树的深度3. 求二叉树中叶子节点的个数4. 求二叉树第K层的节点个数5. 前序遍历,中序遍历,后序遍历(递归版本,非递归版本)6. 分层遍历二叉树(按层次从上往下,从左往右)7. 将二叉查找树变为有序的双向链表8. 判断两棵二叉树是否结构相同9. 判断二叉树是不是平衡二叉树(AVL树)10. 求二叉树的镜像11. 求二叉树中两个节...原创 2019-10-03 22:41:02 · 1159 阅读 · 0 评论 -
判断两条链表(不带环)是否相交,如果相交,求出交点
//定义链表节点typedef struct ListNode{ int val; ListNode* next; }Node; 判断两个链表(链表不带环)有没有相交? 思路:如果两个链表相交,那么最后一个节点肯定是相同的 因此判断两个链表的最后一个节点是不是相同的就可以了bool IsIntersect(Node* first1, Node* first2){ i...原创 2019-10-04 12:39:18 · 232 阅读 · 0 评论
分享