- 博客(34)
- 收藏
- 关注
原创 奶牛生子
一只刚出生的奶牛,4年生1只奶牛(因为这里描述不清,我暂且认为是第四年开始的时候生小牛),以后每年生1只,现在给你一只刚出生的奶牛,求20年后有多少奶牛?网上有类似的代码,但是感觉有问题,这里是自己想的算法,时间、空间复杂度n。#include using namespace std;int son(int n){ int year[4] = {1},i; f
2015-01-05 15:17:06 938 2
转载 linux汇编.section与.globl
.section .data汇编程序中以.开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为汇编指示(Assembler Directive)或伪操作(Pseudo-operation),由于它不是真正的指令所以加个“伪”字。.section指示把代码划分成若干个段(Section),程序被操作系统加载执行时,每个段被加载到不同的地址,操作系统对不同的页面设
2014-07-03 17:07:37 4219 1
转载 “用最小堆将k个已排序链表合并为一个排序链表”(算法导论 练习6.5-9)
问题:请给出一个时间为O(nlgk),用来将k个已排序链表合并为一个排序链表的算法。此处的n为所有输入链表中元素的总数。(提示:用一个最小堆来做k路合并)编程思路:假设k个链表都是非降序排列的。(1)取k个元素建立最小堆,这k个元素分别是k个链表的第一个元素。建堆的时间复杂度O(k)。(2)堆顶元素就是k个链表中最小的那个元素,取出它。时间复杂度O(1)。(
2014-06-08 17:20:29 1370
原创 VS2012修改项目名称
修改解决方案的名称。修改解决项目名称。修改项目的程序集名称和默认命名空间替换整个项目或解决方案中的出现该名称的地方。修改.sln文件中的出现的名称。更该与.sln文件同一目录的文件夹的名称。删除项目Debug或Release文件下的所有内容重新编译整个解决方案
2014-04-29 10:37:57 1990
转载 dm642 调试问题
1.Error: Memory Map Error: READ access by CPU to address 0x40000,which is RESERVED in Hardware.——The 6713 has 256K of memory.0x40000 = 256Kvalid addresses are 0 - 0x3FFFFexternal memor
2014-04-26 11:39:36 999
转载 Linux进程的五个段
转载自http://blog.csdn.net/jxhui23/article/details/8064766下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么的。BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段
2014-04-01 19:12:26 2905
原创 返回链表中间节点指针
如果个数是奇数就返回中间节点,如果是偶数,就返回任意一个。主要是能想到用2个指针,一个指针一次走一步,另一个指针一次走2步#include #include typedef struct node{ int a; struct node *link; }mynode;int creat_tail(mynode *head,int
2014-03-25 14:52:55 5271
原创 输出链表倒数第n个节点数据
考虑特殊情况:1. 链表头指针为空,n小于等于0是错误输入2. 链表实际节点数小于n因此代码:#include #include typedef struct node{ int a; struct node *link; }mynode;int creat_tail(mynode *head,int n){
2014-03-25 14:30:47 4890
原创 公司员工的年龄排序
取值范围一定(0-100),且远小于记录数的排序(可能上万)。这是如果可以使用O(n)的辅助空间,可以使时间复杂度降低到O(n)。用age[10]模拟年龄1-10。25个数据模拟员工数。age数组记录下标表示的年龄人数。统计完age相当于排好了序,然后写入data数组就可以。#include #include void sort(int data[],int length){
2014-03-23 22:57:36 5294
转载 文件中的记录排序
你现在有一个文件,文件中顺序存有N个记录,R1,R2,...,RN,这些记录不是有序的,但是你知道一个整数M,这些记录满足R11,设计一个算法或编写一个程序,将文件中的记录排序为R1'2,设计一个算法或编写一个程序,将文件中的记录排序为R1' 1.就是两个有序数组的合并了,时间复杂度确实是O(N),好说2.第一个限制空间, or 内存不够时就是外部排序了.主要就是读写文件了.
2014-03-16 10:32:40 4943
原创 字符串中最长的数字串
返回一个以“\0”结束的字符串中提取最长的数字串不能使用任何库函数或已经存在的函数,如strlen#include #include char* maxnum(char *source){ char *a = source,*temp,*dest; int maxlen = 0,len = 0; while(*a++){
2014-03-16 10:08:47 5097
原创 13.图——邻接表表示法
本文针对图的邻接表存储。邻接表示图的链式存储方式。有几个顶点就有几个链表,每个链表的后边的节点表示与顶点有关的边。如下图:左边都是顶点,右边都是边。在本文程序里没有包含边的附件信息。程序:#include #include #include #include typedef int status;#define MAX_NAME 5 //顶点字符
2014-03-15 14:47:40 5293
原创 12.图——数组表示法
无向图:V是顶点的集合,VR是弧的集合,弧用(顶点,顶点)表示。有n个顶点,n(n-1)/2条弧的图,是无向完全图。权:图的弧的相关系数。网:带权的图。子图:顶点和弧都包含于原图的图邻接:两顶点之间有弧,则无向图a、b互为邻接点,有向图a邻接到b。依附:弧依附于其两个顶点。顶点的度:与顶点相关联的弧的个数。有向图有入度、出度之分。路径:从a到b途径顶点组成的序列。有向图
2014-03-13 18:54:15 6099
原创 深拷贝、浅拷贝
赋值就是对象的引用,想都不要想。浅拷贝:方式有3种:完全切片、工厂函数如list() dict()、copy模块的copy()效果:产生一个与与原对象同类型的新的对象,不可变元素仍是引用,但赋值时可以重新分配内存而改变;可变元素也是引用,给其下一级元素赋值时不分配内存而仍指向原对象的元素,给这个可变元素本身赋值时重新分配内存并改变。有代码为证:>>> a = ['nam
2014-03-06 20:34:10 4951
原创 字符串模板
python的字符串格式化操作符只适用于字符串,生成格式化字符串。使用这种方法必须记住转换类型的参数,这在有时候比较不便。使用字符串模板就不用记住这些,像shell一样,它使用$变量名作为格式化字符串中要替换的变量。具体见python3.3.3 P85比如:s = Template(’$who has $howmuch’)s.substitute(who=’tim’, howm
2014-03-06 09:04:31 5458
原创 模块变量替换
import一个模块后,多次使用其某个属性时,应该将该模块.属性赋给一个局部变量。因为每次寻找模块属性,先要判断模块是否存在,再判断属性是否存在。赋给局部变量后,python看到一个变量先看是否是局部变量,然后看是否是全局变量。这样就减少了查询时间。
2014-03-05 10:06:38 5012
原创 排序方法总结
排序方法 平均时间 最坏时间 辅助存储简单排序 O(n2) O(n2) O(1)快速排序 O(nlogn) O(n2) O(logn)堆排序 O(nlogn) O(nlogn) O(1)归并排序 O(nlogn) O(nlogn) O(n)
2014-03-04 18:34:08 4782
原创 10.归并排序——2路归并排序
归并排序时将两个或两个以上的有序序列组合成一个大的有序表。如果是两个合并成一个就是2路归并排序。本文针对2路归并排序。 时间上,归并排序需要执行logn次,每次又要比较所有元素,因此时间复杂度是nlogn,且不随原数据排布好坏而改变,因此比较稳定。而且速度仅次于快速排序。空间上,用到递归并且需要多次开辟空间存放合并后的序列,因此在内存紧张的芯片上不宜采用。程序:#inc
2014-03-04 16:44:13 8758
原创 9.选择排序——堆排序
由于树形选择排序具有辅助存储空间多、进行多余比较等缺点,因此经常被堆排序替代。本文针对堆排序。 首先认识什么是堆:n个元素的序列Kl、K2、……… 、Kn满足如下性质时称为堆:ki ki >= k(2i),ki >= k(2i+1),其中(1≤i≤ n),时是大根堆。怎么理解呢?如果把该数组看作是完全二叉树,那么小根堆就是非终端节点的值都小于其左右子节点的值,所以小根堆
2014-03-03 22:22:59 4868
原创 8.选择排序——简单选择排序
选择排序中最简单的是简单选择排序。本文针对简单选择排序。 原理是每次循环选择出后边序列中最小的数据并和前边的数据交换位置,知道循环到最后一个元素。 程序:#include #include #define MAXSIZE 50#define N 15typedef struct{ int key; int other;}no
2014-03-01 16:02:47 5009
原创 7.交换排序——快速排序
本文针对交换排序中的快速排序。快速排序是对冒泡排序的改进。它引入枢轴的概念,可以任意选key数组中的一个值做枢轴,一般都取key[0],然后分别从高地址到低地址把小的数据放到小的位置;从低地址到高地址把大的数据放到大的位置,经过high-low+1次比较,使得high=low而且high处存放回key[0]数据,这就完成了依次划分(partition)操作,效果是high前的数据不比hig
2014-03-01 15:25:49 5014
原创 6.交换排序——冒泡排序
交换排序是交换元素的位置。本文针对交换排序中的冒泡排序。第一次冒泡将n个数据中的最大的数据放到最后一个位置,第二次冒泡将前n-1个数据中的最大的数据放到倒数第二个位置……因此需要比较1+2+……+(n-1)次,时间复杂度是O(n的平方)。 程序:#include #include #define MAXSIZE 50#define N 15
2014-03-01 11:00:08 4935
原创 5.插入排序——希尔插入排序
本文针对希尔插入排序。时间复杂度是随增量序列改变而改变的,希尔序列却没有最好的选择。因此时间复杂度没有确定。增量序列选取的时候有一定原则,最后一个元素必须是1,而且所有的值没有公因子。下边给出大神们推荐的3个增量序列程序:#include #include #define MAXSIZE 50#define N 15#define P 4typede
2014-03-01 09:57:11 4892
原创 4.插入排序——表插入排序
本文针对表插入排序。这种排序方法采用链表的数据结构,按顺序放入数据,并按插入排序的原理修改next指针,这样能够做到排序时不移动数据。排序完之后可以按next指向打印数据,也可以移动数据然后按数组下标打印数据。它的时间复杂度仍是O(n的平方)。程序:#include #include #include #include #define MAXSIZE 5
2014-02-28 19:24:56 5325
原创 3.插入排序——2路插入排序
本文针对2路插入排序。这种排序方法是对折半插入排序的改进,减少了数据移动操作的次数,但是需要另外申请比要排记录所占空间少一个记录的内存空间,从原数组中取值按大小顺序插入这个内存空间。数据移动操作次数之所以减少是因为如果array数组中最大值和最小值出现的比较晚,那么一些稍微大或者小的值就可以直接往temp数组最上或者最下的地方插,就减少了数据移动次数;但是如果很早出现,就要移动和折半插入差
2014-02-27 21:47:59 4886
原创 2.插入排序——折半插入排序
本文针对折半插入排序。这种排序方法是对直接插入排序的改进,即查找操作采用折半减少比较操作次数,但是数据移动次数不变,因此时间复杂度仍是O(n的平方)。程序:#include #include #include #define MAXSIZE 50typedef struct{ int key; int other;}node;type
2014-02-27 20:31:57 4906
转载 谈 Linux,Windows 和 Mac
这段时间受到很多人的来信。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门…… 我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。我觉得我已经写过一些澄清的文章了,可是怎么还是有人来信问 Linux 的问题。也许因为感觉到“舆论压力”,我把文章都删了。
2014-02-27 20:26:07 4800
转载 Linux网络编程经典书籍
首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机网络经典教材。目前已经是第五版,本书作者80年代就开发出MINIX,是一个用于操作系统教学的类UNIX(的小型操作系统。而linux就是受其影
2014-02-27 20:08:48 4133
转载 有趣的linux命令
1. sl 命令你会看到一辆火车从屏幕右边开往左边。。。。。。安装 $ sudo apt-get install sl运行 $ sl命令有 -alFe几个选项,-a An accident seems to happen. You'll feel pity for people who cry for help.-l shows little one.-F It f
2014-02-27 20:02:02 5113
原创 SSH远程登录
服务器端:apt-get install ssh用户端:ssh 服务器端IP默认以用户端的当前用户名登录,如果要修改,ssh 用户名@服务器端IP下载: scp [-r] 192.168.1.150:/home/test /home/test上传: scp [-r] /home/test 192.168.1.150:/home/test
2014-02-20 19:54:18 4915
原创 win7配置FTP服务器
1. 建立服务器目录:C盘建立FTP文件夹2. 安装IIS组件:控制面板->程序->打开或关闭windows功能:3. 配置FTP服务器:文件夹地址栏输入:控制面板\所有控制面板项\管理工具,双击Internet信息服务(IIS)管理器,右键WIN-Q8UQKVI63EA,选择添加FTP站点,输入站点名称“FTP”,物理路径是第一步创建的文件夹,
2014-02-20 19:51:30 5666
原创 ubuntu搭建TFTP
主机端:指定客户端要下载的文件应该去哪个文件夹下找客户端:指定正确的IP1.安装tftp sudo apt-get install tftp-hpa tftpd-hpa 其中:tftp-hpa是客户端,tftpd-hpa是服务器端2.配置tftp服务器 a.修改/etc/default/tftpd-hpa配置文件 将TFTP_D
2014-02-20 19:44:56 4771
原创 ubuntu配置NFS服务器
配置nfs服务器 1.安装nfs $sudo apt-get install nfs-kernel-server rpcbind 2.配置nfs,添加nfs共享目录 a.修改/etc/exports,在该文件最后面添加: /home/nfs/ *(rw,sync,no_root_squash) 其中
2014-02-20 19:43:58 4915
原创 ubuntu添加root用户
sudo passwd rootsu rootsudo gedit /etc/lightdm/lightdm.conf加上:greeter-show-manual-login=true重启就OK
2014-02-20 19:42:36 4002
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人