HEAD detached from 是一个临时的头指针,正常的头指针是指向分支的,这种情况下头指针是游离在分支之外。虽然可以在本地进行一切的git操作,但是如果要想远程库推送的时候就会出现问题。解决方法如下:1.git fetch origin _branch:_branch _branch 是....
分类:
其他好文 时间:
2014-11-04 12:24:21
阅读次数:
664
1 AVL树的定义
AVL树是一种自平衡二叉排序树,它的特点是任何一个节点的左子树高度和右子树的高度差在-1,0,1三者之间。AVL树的任何一个子树都是AVL树。
2 AVL树的实现
AVL树本质是一种二叉排序树,所以二叉排序树的任何性质AVL树都具有,但是AVL树稍微复杂的地方就是AVL树必须满足平衡条件,具体跟BST不同的地方主要体现在插入,删除操作。
插入操作:当插入之后可能会出现不...
分类:
编程语言 时间:
2014-11-03 19:25:21
阅读次数:
183
(1) 为何map和set的插入删除效率比用其他序列容器高?因为map和set的内部数据结构是红黑树,它的插入和删除不需做内存的拷贝和移动。(红黑树的插入和删除是log(n)的)。(2)为何每次insert之后,以前保存的iterator不会失效?iterator这里就相当于指向节点的指针,内存没有...
分类:
编程语言 时间:
2014-11-02 17:57:40
阅读次数:
270
1.快速排序
快速排序是不稳定的排序算法,平均时间复杂度O(nlgn)。快速排序是利用了partition( )进行排序的。partition( )有两种实现形式,(1)利用两个指针一个头指针,一个尾指针,通过交换头尾指针所指的数进行排序; (2)一前一后两个指针同时从左往右进行遍历,如果前指针所遇到的数比主元小,则后指针右移一位,然后交换。Partition方法还可以用在很多地...
分类:
编程语言 时间:
2014-10-31 23:43:47
阅读次数:
380
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、.....
分类:
编程语言 时间:
2014-10-31 22:02:38
阅读次数:
195
引论左堆的合并,插入,删除最小的时间复杂度为O(logN)。二项队列就是为了对这些结果进一步提高的一种数据结构。利用二项队列,这三种操作的最坏时间复杂度为O(logN),但是插入的平均时间复杂度为O(1)二项队列二项队列不是一棵树,它是一个森林,由一组堆序的树组成的深林,叫做二项队列。二项队列有几个...
分类:
编程语言 时间:
2014-10-31 15:20:12
阅读次数:
260
??
循环链表和单链表没有本质上的差别。唯一不同的链表的最后不再是空的了,而是指向了first头指针。只有这样我们才会实现链表的循环功能,那么问题来了,我们在下面的函数功能中我们只是需要把里面用的头指针的重用名换到first->next中,而且其中的计数器count也从1开始计数,这样就避免了在while的循环中第一步实行不下去。废话不多说。详细看wo的代码吧。
#ifndef CirLink...
分类:
其他好文 时间:
2014-10-30 15:25:59
阅读次数:
155
这回要求的是第k小的元素,参考了ljl大神的模板,orz 1 //insert 插入 2 //remove 删除 3 //_find 查找 4 //kth 返回root为根的树中第k小的元素 5 //treap插入、删除、查询时间复杂度均为O(logn) 6 #include 7 #...
分类:
其他好文 时间:
2014-10-28 19:55:27
阅读次数:
283
一:题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义如下:
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
void delete_note(ListNode *head,ListNode *current)
{
// 空的
if(head == null || ...
分类:
编程语言 时间:
2014-10-28 00:53:32
阅读次数:
180