堆排算是排序算法中比较难的一个算法,在实现编码之前首先要对堆排的思想有一个清晰的思路,下面我们就来分析一下堆排序。
1.首先要明白堆排序第一步要有堆,也就是完全二叉树,那么问题来了,如何创建一个完全二叉树呢?完全二叉树是需要按层来创建的,如果你曾经编写过按层遍历二叉树这块会很好理解,按层的话要记录上一个结点,所以要用到 队列,创建的节点依次入队。
2.创建好完全二叉树,堆排...
分类:
编程语言 时间:
2015-04-21 09:56:25
阅读次数:
165
顺序链表代码 非常简单;但这个代码会有假溢出的状况出现;就是在队尾已满的情况下,不断出队后若在此时进行入队操作 判断队列已满的条件是q->head==q->tail 此时这个条件满足。 但实际队列之前已经出队了好几个,前面还有空余空间,这就是假溢出;(原谅我懒得画图)假溢出解决办法1.每次出队后 把...
分类:
编程语言 时间:
2015-04-21 00:12:12
阅读次数:
224
这个题目,简单的搜索题,刚开始我是用并查集做的,结果很明显WA,后来想了下,如果有个单词m开头,b结尾的也可以,所以很错误的想法。运用广搜,可以很好的解决。
我的代码中的是将字符串的位置i入队的,不是整个字符串。
水题一个,下面是AC代码:
#include
#include
#include
using namespace std;
bool vis[1000];
char...
分类:
其他好文 时间:
2015-04-20 14:55:53
阅读次数:
128
宽度优先搜索,又称为广度优先搜索,简称BFS搜索过程:从初始结点开始,逐层向下扩展,即第n层搜索未完成,不得进入下一层搜索一、初始结点入队,进入循环二、取出队列的第一个元素三、判断该结点是不是目标结点,如果是目标结点,则问题解决,跳出循环四、如果该结点不是目标结点,判断其是否能够扩展,若不能,跳到步...
分类:
其他好文 时间:
2015-04-19 22:41:05
阅读次数:
143
顺序栈和链队的基本操作就不再一一列举了,要想实现回文判断,先来了解什么是回文?“回文”一字符串正着读和反着读是相同的字符序列,如“abcba”,"abba"为"回文",“abab”则不是“回文”。
其次就是顺序栈和链队如何实现回文的判断?将输入的字符串依次入栈和入队,然后再依次出栈和出队,由于入栈和入队是相同的序列,然而出栈和出队是相反的序列,这就实现了回文的判断。
...
分类:
其他好文 时间:
2015-04-17 22:25:05
阅读次数:
149
/*
* 2015年4月17日14:04:56
* 目的:用链式存储来实现队列
* 这里我最开始想使用单链表来实现
* 大家来想一下啊,其实单链表实现不是特别好
* 因为虽然出队列的时间复杂度就是O(1),但是
* 入队列的时间复杂度却是O(n),因为每次都是从末尾进行插入
* 从末尾插入你首先就要找到当前指向尾指针的结点,由于链表是单向的
* 所以必须从front开始进行遍历才能...
分类:
其他好文 时间:
2015-04-17 18:18:01
阅读次数:
330
此题是道bfs搜索的题目。bfs的精髓就是找到下一步的所有可能然后存储起来,有点暴力的感觉,这题就是每步中 所有的可能都入队,然后一一 判断。这道题的题意是 :给你一幅完全图,再给你三个盘,目的是把这三个盘移动到一个点上,输出最少步数!盘移动的时候有要求,比如移第一个盘,把1盘移动到2这个位置,(1...
分类:
其他好文 时间:
2015-04-16 23:28:35
阅读次数:
249
以为这题和连连看一样水,就很开心的用了dfs然后tle了无数次,好吧,我bfs总行了吧,然后wa了无数次.................
之所以wa是因为在bfs的过程中有些点是可以重复加入队列的.
例如
1
3 3
..*
...
*.*
1 1 1 3 2
这组数据(行,列)
1 (1,1)→(1,2)→(2,2)→(2,3)要转2次弯;
2 (1,1)→(2,1)...
分类:
其他好文 时间:
2015-04-16 09:06:23
阅读次数:
143
1.题目描述:点击打开链接
2.解题思路:本题要求找出所给的幸运数的下标。本题类似于紫书上的一道例题ugly number。利用BFS即可解决。首先将4,7入队列,每次出队列后,将数字添加到set,同时将它们的末尾分别添加是4,7后得到新的幸运数入队列即可。上述过程打表后,直接输出即可。
3.代码:
#define _CRT_SECURE_NO_WARNINGS
#include
#inc...
分类:
其他好文 时间:
2015-04-15 13:33:18
阅读次数:
123
题意 动态查询第K大的数
用小数在前优先队列维护K个数 每要插入一个数时 若这个数小于队首元素那么就不用插入了 否则队首元素出队 这个数入队 每次询问只用输出队首元素就行了
#include
#include
using namespace std;
int main()
{
int n, a, k;
char op[5];
while(~scanf("%d%...
分类:
其他好文 时间:
2015-04-14 14:45:18
阅读次数:
175