例:已知两个单链表head1和head2各自有序升序排列,请把他们合并成一个连表并依然有序,并保留原来所有节点
假设以下两个链表:
链表1:1->3->5
链表2:2->4->6
(1)比较1和链表2的第一个节点数据,由于15)和链表2在调用本过程,比较得到结果链表的第二个节点,即2与3比较得到2,此时合并后的链表节点为1->2,这样
递归知道两个链表的节点都被加到结果链表中。...
分类:
其他好文 时间:
2014-05-09 15:04:40
阅读次数:
374
例:已知两个单链表head1和head2各自有序升序排列,请把他们合并成一个连表并依然有序,并保留原来所有节点假设以下两个链表:链表1:1->3->5链表2:2->4->6(1)比较1和链表2的第一个节点数据,由于15)和链表2在调用本过程,比较得到结果链表的第二个节点,即2与3比较得到2,此时合并...
分类:
其他好文 时间:
2014-05-09 13:08:43
阅读次数:
283
一、冒泡排序冒泡排序算是最基础的一种算法了,复杂度为O(N^2),其基本思想是:从最低端数据开始,两两相邻比较,如果反序则交换。代码如下:/*最基本的冒泡排序*/void
BubbleSort1 (int n, int *array) /*little > big*/{ int i, j...
分类:
其他好文 时间:
2014-05-09 13:02:57
阅读次数:
319
Map map = new
TreeMap();//TreeMap本身具有排序功能(默认按键升序排序)map.put(12, "hello");map.put(7,
"bravestarr");map.put(20, "world");System.out.println(map.toString(...
分类:
其他好文 时间:
2014-05-09 09:28:49
阅读次数:
282
算法描述:
在一个长度为N的无序数组中,第一趟遍历N个数据,找出其中最小的数值与第一个元素交换。第二趟遍历剩下的N-1个数据,找出最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数据与第N-1个数据交换。排序结束。第二趟遍历:
12 20 80 91 56第三趟遍历...
分类:
其他好文 时间:
2014-05-09 07:41:42
阅读次数:
283
上一篇我们记录了冒泡排序算法的实现,这次我们来看直接选择排序是如何实现的。1.直接选择排序:基本思想:直接选择排序也是对被排序的序列进行n-1次遍历,与冒泡排序不同的是,它并不对本次遍历序列内的元素两两进行比较并根据比较的结果来决定是否交换,而是找出本次遍历的序列内元素的最小值,并插入本次遍历的开始...
分类:
其他好文 时间:
2014-05-09 05:25:40
阅读次数:
229
http://acm.hdu.edu.cn/showproblem.php?pid=1498
大致题意:给一个n*n的格子,每个格子中都放有不同颜色的气球。每次你可以选择一行或一列以及一种颜色的气球,然后将该行或该列上该种颜色的气球全部扎破。问经过K次,会有哪些气球是不可能被完全扎破的,按升序输出。
以行列为X,Y集合,对每一种颜色的气球构建二分图,
#include...
分类:
其他好文 时间:
2014-05-09 02:39:21
阅读次数:
314
堆的删除
按定义,堆中每次都只能删除第0个数据。为了便于重建堆,实际的操作是将最后一个数据的值赋给根结点,然后再从根结点开始进行一次从上向下的调整。调整时先在左右儿子结点中找最小的,如果父结点比这个最小的子结点还小说明不需要调整了,反之将父结点和它交换后再考虑后面的结点。相当于从根结点将一个数据的“下沉”过程。
堆的插入
每次插入都是将新数据放在数组最后。可以发现从这个新...
分类:
其他好文 时间:
2014-05-09 02:16:57
阅读次数:
255
HDU 4571
大概题意:n个点(
解法:
容易看出应该用spfa和dp来解。关键时对visit和pass点的处理。
通过floyd预处理出visit每个点对之间的最小边消耗。然后,加一个超级源点和一个超级终点。超级源点负责pas点s能够到达的点,超级终点负责那些能越过e的点
由于visit的点的moneyp值必须严格升序所以也可以拓扑之后dp
不能用dij,因为本题时求最长...
分类:
其他好文 时间:
2014-05-08 17:12:27
阅读次数:
408