![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Fukui_YB_yb
这个作者很懒,什么都没留下…
展开
-
队列的链表实现
今天自己动手实现了队列的链表实现,发现写的头晕眼花,还出了一些错误,看来还是不太熟啊原创 2016-11-29 14:49:40 · 300 阅读 · 0 评论 -
quick sort 的c++实现
我直接把代码贴出来了,晕,我发了一遍怎么突然博客就没了,刚开始还不太熟悉 进入正题:我实现的是三向切分的快速排序,和采用随机切分点,这么做有几个好处,一个是对于重复元素很多的数组有很好的性质,可以从代码中看到重复的元素并不执行交换操作,考虑一个极端条件,数组全是{1,1,1,1…1},可以看到只用遍历一次数组就可以了,是O(N)时间复杂度。使用随机切分点的好处是使得最坏条件出现的几率大大大幅度下降原创 2016-12-03 15:49:59 · 664 阅读 · 0 评论 -
leetcode 判断链表是否有环,且得到环的位子
自己想不出来,去看别人的答案,发现是个数学问题,(数学太差了!)**my solution is like this: using two pointers, one of them one step at a time. another pointer each take two steps. Suppose the first meet at step k,the length of the C原创 2016-12-13 16:46:04 · 347 阅读 · 0 评论 -
使用插入算法排序链表,leetcode
这是我最开始的想法,我大概花了一个小时才做出来,太慢了,我的思路是使用递归的方法,从后面往前面排序,比如:2,3,1 第一次递归变为 : 2,1,3 ,第二次递归变为:1,2,3 。但是时间花得太久了,80ms左右;class Solution { public: ListNode* insertionSortList(ListNode* head) { if(head ==原创 2016-12-13 16:50:16 · 375 阅读 · 0 评论 -
LeetCode中 将升序链表转换成平衡二叉树
节点和树的结构: Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ /** * Definition for a bina原创 2016-12-08 16:23:45 · 462 阅读 · 0 评论 -
LeetCode中 翻转链表II
Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->5->NULL. Note: Given m, n satisfy the follow原创 2016-12-08 16:26:59 · 568 阅读 · 0 评论 -
LeetCode中将升序链表转换成平衡二叉树
节点和树的结构: Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ /** * Definition for a binary原创 2016-12-08 16:29:00 · 629 阅读 · 0 评论 -
quick sort 的c++实现
先把代码搬出来,我参照的教科书式算法第四版,在我自己看完后,有点晕,然后我就试试自己写一遍。我将所有功能集合到一个类中,我实现的是3分的快速排序,使用了随机获取切分点。这样做有几个有点,首先是对于数组中有大量重复元素情况下,3分法表现更好,因为当出现重复元素时,并未交换元素。随机获取切分点可以使得最坏情况的出现几率大幅下降,比如每次切分点都是最大或者最小值。 .h/* author : yb ti原创 2016-12-03 15:35:38 · 706 阅读 · 0 评论 -
堆排序问题
堆,本质上是一个完全二叉树,可以用数组来表示,这样非常的方便。最大堆:从数组的第一号开始排,a[0]为空,方便计算。那么ai>=a2i &&ai>=a(2i+1),那么就是最大堆; 最小堆:从数组的第一号开始排,a[0]为空,方便计算。那么ai<=a2i &&ai<=a(2i+1),那么就是最小堆。我写了一个堆排序的代码。现在贴出来供大家参考,有错误的地方请大家告诉我,我马上修改: 头文件:``原创 2017-03-28 10:36:50 · 403 阅读 · 0 评论