- 博客(61)
- 资源 (2)
- 收藏
- 关注
原创 Leetcode_Alog.136- Single Number
最近一直学linux,而且一直没有注意总结,有种不踏实的感觉,那就刷刷题,写写博沉淀沉淀吧。Leetcode是个面向面试的类似OJ的平台,据说它的题目很简洁而且切中的知识点都是经典的数据结构和算法,快要找实习了,就当复习复习DSA吧。1.my solution最先想到的就是hash table,只要table足够大,就能使得数组中每个数对应一个坑,起始坑里数字为0,该坑对应的数
2015-06-15 00:44:44 469
原创 算法导论 第32章 详解字符串的匹配,自动机,KMP算法
中间跳过了几章,先看自己认为比较容易看懂了几章,结果发现,证明真是难呀。虽然没有怎么看过其他的算法书,但是觉得算法导论虽然在证明,把问题形式化方面稍微有点罗嗦了,但是感觉还是不错了,它不会直接抛给你一个最有效的算法,然后直接跟你讲,它会从最朴素的算法逐渐讲更有效率的算法,这样让读者对问题有更清晰的把握,而且有些高效率的算法往往是建立在朴素的算法上的。字符串匹配就是这样,朴素算法-自动机识别法-KM
2014-12-17 00:29:03 1842
原创 第一章-Qt入门 1.3 窗口部件的布局
一个简单的例子程序,来说明 如何用布局 layout 来管理窗口部件的几何形状, 如何利用信号和槽来同步窗口部件 有三个窗口部件: 一个QSpinBOx , 一个QSider ,一个QWidget 这个是主窗口, 前两个会显示在QWidget中,都是住窗口部件的子对象, 也可以说 QWidget 自己没有父对象,程序把它当作顶层窗口,QWi
2014-04-03 20:57:40 688
原创 第一章-Qt入门,1.2 建立连接
如何响应用户的动作。应用程序由一个按钮构成。可以按按钮退出程序#include #include //主窗口部件不再是QLael了,而是QPushButton,int main(int argc, char *argv[]){ QApplication app(argc, argv); QPushButton *button=new QPushButton("Quit!"
2014-04-03 20:22:49 593
原创 第一章-Qt入门,1.1 Hello Qt
#include //跟C++一样包含两个类的定义#includeint main(int argc, char *argv[]){ QApplication app(argc, argv); //创建一个QApplication对象,用来管理整个应用程序所用到的资源 QLabel *label=new QLabel("H
2014-04-03 20:14:04 566
原创 HDU 1003 Max Sum
接触的第一道动态规划的题,起先自己用穷举法做的,时间复杂度为N3 没想太多结果超时了,,最后在网上查看了动态规划的思想,重新写了一个,以后自学了动态规划再细细研究,先mark,#includeusing namespace std;void max_s(int shu[],int n ,int sig){ int start=0,ends=0; int sum,maxs;
2014-04-01 22:06:06 406
转载 C/C++数组名与指针区别
最近做题纠结到一个问题,数组名和指针的区别,然后在网上找到一篇不错的文章,消除疑惑,,mark一下引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C+
2014-03-24 23:20:20 507
原创 C++代码,数据结构-外部排序-置换-选择排序
置换选择排序实在树形选择排序的基础上的来的,她产生的归并段的长度是不同,。置换选择排序的操作过程,可以查看书,这里只给出C++可运行成功代码,注:这里也需要建立败者树,但这里建立败者树的过程和上一个败者树建立过程是不一样的,,也可以自己画图进行建立过程的推导#include#includeusing namespace std;#define w 6typedef int Lo
2014-03-23 16:10:33 1771
原创 C++代码,数据结构-外部排序-败者树
败者树是树形选择排序的一种变型,它的每个非终端结点表示左右孩子中的败者,至于为什么要使用败者树,而不是胜者树,这个问题我在网上也没有寻找到答案,可能在建立树的调整树的时候败者树更加符合外部排序的要求吧, 注:建立败者树的过程,,这个最好用图画出来比较好理解,#includeusing namespace std;#define k 5typedef int Losertree
2014-03-23 16:03:09 1569 2
原创 C++代码,数据结构-内部排序-基数排序-链式基数排序
基数排序是一种从记录最次位关键字开始排序的方法,比如数据,从个位开始排序,具体的方法可以参照书上,我把书上的伪代码以可运行代码的形式呈现:难点:书上 f e 数组的实现用了链表,节省了辅助空间,f数组的值只指向该位数第一个值在序列中的位置,该位数上的序列依靠记录本身带有的next指针来连接,e数组的值只指向该位数序列上最后一个值在序列上的位置。#include#include#incl
2014-03-19 17:59:26 1109
原创 C++代码,数据结构-内部排序-选择排序-归并排序
归并排序,其实就是把有N个记录的序列,看成n个序列,然后两个只有一个记录的序列归并为有两个记录的序列(归并完的序列是有序的),经过一定此时的归并,最后得到长度为n的有序序列。代码:#include#include#include#include#includeusing namespace std;//第十章 内部排序//归并排序//待排记录数据的数据结构#define
2014-03-17 20:39:47 810
原创 C++代码,数据结构-内部排序-选择排序-堆排序
最简单的选择排序,的时间复杂度为N2;其主要操作就是比较,从减少次数出发来改进算法,书上提到了树形选择排序,但是有需要的辅助空间较多等缺点,为了弥补,威洛姆斯提出了另一种形式的选择排序——堆排序, 根据堆的定义,我们可以把一个序列对应的一维数组看成是一个完全二叉树,堆顶为最大值或者最小值,也就是完全二叉树的根,。堆排序我看了好久,最主要的原因就是对完全二叉树的性质掌握不深,若根的起点标
2014-03-14 21:35:02 1076
原创 C++代码,数据结构-内部排序-交换排序-快速排序
快速排序是对起泡排序的一种改进,通过一趟排序,可将序列分隔成独立的两部分,但一部分的关键字均比另一部分的关键字小,在分别对两部分记录进行排序,最后达到有序,#includeusing namespace std;//第十章 内部排序//待排记录数据的数据结构#define maxsize 100000struct redtype{int key;};struct Sqlist
2014-03-14 20:43:40 644
原创 C++代码,数据结构-内部排序-交换排序-起泡排序
最简单的一种就是起泡排序,,#include#include#include#include#includeusing namespace std;//第十章 内部排序//交换排序//待排记录数据的数据结构#define maxsize 100000struct redtype{int key;};struct Sqlist{redtype r[maxsize]
2014-03-14 20:38:36 1082
原创 C++代码,数据结构-内部排序-插入排序-Shell排序
希尔排序,又称缩小增量排序,在时间效率上较前几种插入排序类的方法有较大的改进我们都知道直接插入排序的效率取决于序列的初始状态,而希尔排序可以通过巧妙的方法将序列经过几趟排序,使得序列在进行一次直接插入排序的时候效率大大的增加,对于希尔排序,我目前的认识也只能达到可以写出算法,已经基本理解此算法,但更深的理解还是没有的,只是觉得很巧妙#includeusing namespace st
2014-03-09 20:17:58 665
原创 C++代码,数据结构-内部排序-插入排序-表插入排序
利用两个指针,通过修改2n次指针来代替移动记录,时间复杂度还是N2但是表插入排序之后只求得一个有序的链表,只能对他进行顺序查找,不能进行随机查找,为实现有序表的折半查找,需要对链表进行重新排列,#includeusing namespace std;//第十章 内部排序//静态链表容量#define size 100struct slnode{int key;int ne
2014-03-09 19:46:00 1097
原创 C++代码,数据结构-内部排序-插入排序-2-路插入排序
2-路插入排序是在折半插入排序的基础上再改进之,减少移动记录的次数,但需要n个记录的辅助空间。#includeusing namespace std;//第十章 内部排序//待排记录数据的数据结构#define maxsize 20struct redtype{int key;};struct Sqlist{redtype r[maxsize];int length;
2014-03-09 19:39:49 672
原创 C++代码,数据结构-内部排序-插入排序-折半插入排序
折半插入排序,只是减少了比较的次数,这样速度比直接插入排序快,但是时间复杂度仍然是N2#includeusing namespace std;//第十章 内部排序//待排记录数据的数据结构#define maxsize 20struct redtype{int key;};struct Sqlist{redtype r[maxsize];int length;};
2014-03-09 19:35:16 736
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人