11 zk_sima

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 8w+

分治法

分治法:1)   将问题的实例划分为同一个问题的几个较小的实例,最好拥有同样的规模2)   对这些较小的实例求解(一般使用对贵方法,但在问题规模足够小的时候,有时候会利用另一个算法)。3)   如果必要的话,合并这些较小问题的求解,已得到原始问题的解1.      归并排序算法:mergeSort(A,n)//用对贵调用对数组 A进行排序//输入:一个待排序的数组

2011-11-03 11:04:53

蛮力法

蛮力法:是一种简单直接地解决问题的方法,常常直接给予问题的描述和所涉及的概念定义。1.       选择排序算法:SelectionSort(Array a)//该算法用选择排序对给定数组排序//输入:一个可排序数组 A[0,1,….n-1]//输出:一个已排序数组 A[0,1,….n-1](升序)for  i            min

2011-11-01 16:21:32

算法学习1

时间过得挺快,一晃就快毕业了。工作找好了,最近也闲的无聊,所以买了本算法书,想好好的看看算法。话不多说从最基本的算法开始:1.       求小于根号n的最大整数。算法:           for m                    if m*m                             return m实现:int sqrtN(int n){

2011-10-27 10:33:52

http服务器的实现3_http响应

在实现http响应包头之前,我们来看下http响应的格式:HTTP/version 应答码消息Content-Type: MINE……………………. 正文 例子:HTTP/1.1 200 OKContent-Type: text/html

2011-09-01 22:35:03

http服务器的实现2_http请求的包头解析

http请求包的基本格式如下:方法 /资源路径 ?参数1&参数2  HTTP/version…………..……………例如:GET/jianli.pdf HTTP/1.1Host:127.0.0.1Connection:keep-aliveUser-A

2011-09-01 22:31:42

http服务器的实现1_网络服务器的实现

前段时间看了《深入理解计算机系统》,在网络编程这一章看到了一个http服务器的简单实现,然后也想自己在windows下面实现一个简单的http服务器。       为了方面叙述,下面从实现的角度来一步步的说明怎么实现这个http服务器。其实说到http服务器也就是从浏览器发送

2011-09-01 22:30:19

关于内联函数

看c++primer时看到一句话“把内联函数放到头文件中”。当时看了后觉的挺奇怪,如果把内联函数放到头文件中 岂不是在链接时要报错?因为会产生重复定义的错误。但是测试了下面的代码:test.h#ifndef  ___TEST_H_#define ___TEST_H

2011-09-01 11:09:27

串口调试程序的实现

由于需要用到串口读写程序,然后就简单的实现了个串口读写程序(基于MFC)。首先是串口的读写,基本的函数就是CreateFile,ReadFile,WriteFile,SetCommState和GetCommState。所以首先为了更好的调用这些函数我对这些函数

2011-07-05 16:49:11

wcout不能输出中文的解决方法

<br />当然我也是从网上找的资料,原理不懂。<br />基本上,如果wcout不能输出中文,只需要加上这句语句就可以:<br />wcout.imbue(locale(locale(),"",LC_CTYPE));<br />原理有待以后再深究,现在就记下解决方案。

2011-05-25 15:37:00

快速排序的实现

<br />快速排序的思想跟归并排序的思想是一致的,也就是把一个大的问题,分成2个小的问题,然后再合并.<br />概念简单来讲就是,首先在待排序队列里面找到一个数,比这个数小的放到这个数的左边,比这个数大的放到数的右边,然后分别对左右两边进行递归排序.<br />代码如下:QuickSort.h<br /><br />/******************************************************<br />*       快速排序步骤:QuickSort<br />*   

2011-05-19 00:48:00

归并排序的实现(again)

<br />归并排序也就是把一个数列分成两份,首先分别对2份进行排序,然后把这2份一起排序,典型的递归实现.<br />实现代码: MergeSort.h:<br /><br />//归并排序时间复杂度:NlogN,但是由于存在<br />//                          for(inti=0;i!=length;++i)<br />//                          *first++=*(assistSpace+i);<br />//数据的复制需要额外的时间,

2011-05-18 00:09:00

堆排序的实现

<br />堆排序也就是一个简单的完全二叉树,满足的规则是每个父节点大于(小于)子节点,一般通过线性队列来实现,所以一般是通过数组来实现的。<br />基本的排序步骤是:<br />1.创建堆 CreateHeap<br />2.依次的取出头节点(也就是最大值或者最小值) deleteMax<br />3.把取出的值放到一个新的容器中,当然我们为了空间复杂度较小 可以直接在原有的容器末尾插入。<br /><br /><br />实现:<br />HeapSort.h<br /><br />//堆排序的实现,

2011-05-16 21:01:00

希尔排序的实现

希尔排序,也就是对于一列数据,对间隔为k的数据进行排序,也就是对于 1、1+k、1+2×k....;2、2+k、2+2×k、....;..... 分别进行排序,这样 间隔为k 的数据就是有序的了,然后逐渐减小k的值,知道k为1的时候,也就是对整个数列进行完整的排序了。希尔排序关键的地方是 k值怎么确定,k为多少的时候效率最高,一般来说 是2n-1,2n-1-1,.......1 这样的k比较好。关键代码如下:templatevoid __shellSort(Iterator first,Iterator

2011-05-12 00:08:00

插入排序的实现

<br />插入排序,就是吧第p位置的数据,插入到容量为p的有序容器中。<br />当然,一般来说,我们可以重新分配一块新的空间,用来存放有序的数据。但是下面的例子是在就的空间上进行排序,每次插入操作就是把第p位置的数据插入到0~p的位置上:<br /><br />template<typename Obj,typenameIterator_><br />void _insert_sort(Iterator_ first,Iterator_last,Obj)<br />{<br />       f

2011-05-11 23:58:00

线程管理_1

<br />这里先来进行线程的入门,没有涉及到任何同步的问题,关于同步的问题后面再说。<br />主要函数:<br />_beginthreadex  (注意一般不要用 CreateThread,以为这个函数在调用c库函数的时候不是线程安全的,具体细节我也不明白,不过微软都这样建议 那么就这样了,以后我不会用到CreateThread)<br />_endthreadex<br />细节不说,可以自己看msdn上的参数说明,基本上就是,给线程提供一个入口地址,提供一些参数,然后得到线程id和线程句柄。<br

2011-04-29 16:17:00

进程管理

<br />进程管理(这里不涉及到进程间通讯)<br />主要函数:<br />CreateProcess。<br />直接来看刚才写的一段程序。<br />2个进程,(主)进程创建5个子进程并给他传递打开文件的句柄,让5个子进程分配对文件进行写数据。<br />子进程:<br /><br />#include<windows.h><br />#include<tchar.h><br />#include<iostream><br />using namespace std;<br />int _tmain

2011-04-28 19:21:00

内存管理_3

<br />内存映射文件实例——dll<br />(本文只是为了自己需要以帮助自己以后能很快的回顾,不适合其他人来阅读,如果您需要学习dll的编写或者dll 的2种调用方式 那么请继续google)<br />动态库的好处在前面说过,可以动态调用,节约内存空间,以及动态的改变dll而不需要重新编译我们调用dll 的客户端程序。<br />动态的库的调用有2中方式,一种是显式的一种隐式的,这里我只考虑显式的,隐式的调用跟静态库的调用类似,需要提供声明文件和库文件(lib)所以我们在隐式调用dll 的时候需要提

2011-04-28 15:51:00

内存管理_2

<br /><br />(本文只适合本人以后复习使用,如果你想要学习知识点,可能会浪费你的时间)<br />内存映射文件: 我们知道dll是通过内存映射来实现动态的内存访问的,这样可以让多个进行同时访问同一内存空间。<br />其实dll就是利用的内存映射的原理。我们每个进程都有自己独立的虚拟内存空间,所以不同进程指向的dll的虚拟内存空间是不同的,但是dll 的不同进程的虚拟内存空间映射的却是同一物理内存地址,所以我们可以利用dll 来进行进程间通讯。<br />所以内存映射文件的本质就是让进程的虚拟内存

2011-04-27 17:17:00

内存管理_1

<br />(本文只适合本人以后复习的需要,不适合其他人的学习,如果你不小心进来了,那么不好意思浪费您的时间了)<br />几个重要的函数:<br />GetProcessHeap//得到当前进程的主堆,注意这个失败返回的是NULL而不是INVALID_HANDLE_VALUE<br />HeapCreate//创建一个堆<br />HeapDestroy//删除某个堆<br />HeapAlloc//在某个堆上分配内存空间,跟malloc(calloc)是一致的<br />HeapFree//释放到某个堆

2011-04-27 16:36:00

异常处理

<br />(下面的内容主要是让自己以后在使用中能够很快的想起并使用,不适合别人来学习知识点的,所以如果你不小心Google进来了,那么浪费你时间了)<br />在windows里面异常处理主要是通过:<br />_try,_except,_finally<br />这3个模块来处理的,当然里面会用到GetExceptionCode来得到异常代码,一般是在<br />_except(filter(GetExceptionCode()))<br />{<br /> ....<br />}<br />里面用

2011-04-27 10:31:00

查看更多

勋章 我的勋章
    暂无奖章