随笔分类 -  ACM_丁海龙

摘要:堆-顾名思义,上面小,下面大,或者上面大,下面小。在堆排序过程中,首先应该建堆。如何将数组中的元素建立成一个规范的堆行结构。二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最... 阅读全文
posted @ 2014-07-25 16:45 scott_ding 阅读(300) 评论(0) 推荐(0)
摘要:堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都... 阅读全文
posted @ 2014-07-25 11:05 scott_ding 阅读(136) 评论(0) 推荐(0)
摘要:归并排序,顾名思义-先递归再合并的排序方式,一层一层的递归,当递归到最底层的时候,进行合并操作,这也是分治算法的经典运用。首先是要进行把两个有序的序列进行合并操作,需要借助辅助空间,先把有序序列存储在辅助空间中,在从辅助空间把有序序列复制到原序列中,完成合并操作,相应代码如下:void Merge(... 阅读全文
posted @ 2014-07-21 16:14 scott_ding 阅读(220) 评论(0) 推荐(0)
摘要:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个... 阅读全文
posted @ 2014-07-18 18:48 scott_ding 阅读(168) 评论(0) 推荐(0)
摘要:快速排序是从起泡排序改进而得的一种“交换”排序方法。它的基本思想是通过一趟排序将待排记录分割成相邻的两个区域,其中一个区域中的元素均比另一个区域中元素小(区域内不见得有序)则可对这两个区域内的元素进行再排序,以达到整个序列有序。三步跑(三个while循环)相当于二叉树的前序遍历://快速排序#inc... 阅读全文
posted @ 2014-07-15 16:06 scott_ding 阅读(241) 评论(0) 推荐(0)
摘要:再进行时间复杂度分析时,首先找开始第一次和结束的最后一次,中间会有一定的计算规律。 阅读全文
posted @ 2014-07-15 12:14 scott_ding 阅读(142) 评论(0) 推荐(0)
摘要:插入排序的基本操作是将当前无序序列区中的第一个元素插入到有序序列区,使有序序列区的长度增加1;为了防止循环变量出界,在循环结束的条件中加了( i >= 0 )的判别,若将这个用在插入算法中,,将会因为这个条件的判别增加排序时间。为此改写在有序表中进行插入的算法如下:利用 a[0] 复制待插入的记录,... 阅读全文
posted @ 2014-07-14 20:22 scott_ding 阅读(150) 评论(0) 推荐(0)
摘要:该算法时间复杂度与输入的顺序有关,如果输入的是一组有序的数据,时间复杂度为O(n),如果是一组无序的数据,时间复杂度为O(n^2);空间复杂度为O(1);//冒泡排序#includeint main() { int a[] = {49,38,65,49,76,13,27,52}; //... 阅读全文
posted @ 2014-07-14 11:14 scott_ding 阅读(113) 评论(0) 推荐(0)
摘要:该算法时间复杂度为O(n^2),空间复杂度为O(1) ;//选择排序(前部为有序序列,后部为无序序列)#includeint main() { int a[] = {49,38,65,49,76,13,27,52} ; int i , j , k ; for(i = 0 ; i ... 阅读全文
posted @ 2014-07-14 10:39 scott_ding 阅读(129) 评论(0) 推荐(0)
摘要:将线性表以带头结点的单链表作存储结构,偶数放前,奇数放后;代码如下:#includetypedef struct LNode { int data ; struct LNode *next ;}LNode , *LinkList ;int main() { LinkList... 阅读全文
posted @ 2014-07-14 08:32 scott_ding 阅读(167) 评论(0) 推荐(0)
摘要:分别以两个(带头结点的)循环有序链表表示集合A和B,完成这两个集合并集的操作:代码如下:#includetypedef struct LNode { int data ; struct LNode *next ;}LNode , *LinkList ;void union_OL(L... 阅读全文
posted @ 2014-07-13 17:56 scott_ding 阅读(186) 评论(0) 推荐(0)
摘要:算法设计 阅读全文
posted @ 2014-07-10 09:17 scott_ding 阅读(135) 评论(0) 推荐(0)
摘要:区间dp 阅读全文
posted @ 2014-05-15 17:20 scott_ding 阅读(119) 评论(0) 推荐(0)
摘要:每一个小方块的最优解都要计算出来 阅读全文
posted @ 2014-05-15 15:15 scott_ding 阅读(207) 评论(0) 推荐(0)
摘要:memset给数组的一部分赋初值 阅读全文
posted @ 2014-05-15 10:42 scott_ding 阅读(134) 评论(0) 推荐(0)
摘要:DFS 阅读全文
posted @ 2014-05-07 08:03 scott_ding 阅读(258) 评论(0) 推荐(0)
摘要:搜索 阅读全文
posted @ 2014-05-06 23:43 scott_ding 阅读(184) 评论(0) 推荐(0)
摘要:若有向图G = (V , E)满足下列条件:1、有且仅有一个顶点S,它的入度为 0 ,这个顶点称为源点。2、有且仅有一个顶点T,它的出度为 0 ,这个顶点称为汇点。3、每一条弧都有一个非负数,叫做这条边的容量,边(Vi , Vj)的容量用 Cij 来表示。则此有向图称为网络流图,记为 G = ( V... 阅读全文
posted @ 2014-04-30 22:02 scott_ding 阅读(821) 评论(0) 推荐(0)
摘要:字符串处理问题 阅读全文
posted @ 2014-04-16 20:50 scott_ding 阅读(615) 评论(0) 推荐(0)
摘要:set 阅读全文
posted @ 2014-04-15 20:48 scott_ding 阅读(196) 评论(0) 推荐(0)