<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhangwang010的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhangwang010</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhangwang010]]></copyright><item><title><![CDATA[AJAX 简单理解]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/77932623</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/77932623</guid><author>zhangwang010</author><pubDate>Mon, 11 Sep 2017 14:12:37 +0800</pubDate><description><![CDATA[ajax使用 XMLHttpRequest 对象和服务器交换数据,这个对象本身是封装的一个请求,有两个方法 open(method,url,asyoyc)设置请求参数 和send(String)发送请求;setRequestHeader(header,value)设置请求头
等于是客户端访问了一次服务器,请求一些数据,但并不刷新page,而是通过javascriptDOM操作把数据更新到page]]></description><category></category></item><item><title><![CDATA[cookie session 和登录验证]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/77931688</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/77931688</guid><author>zhangwang010</author><pubDate>Mon, 11 Sep 2017 11:58:47 +0800</pubDate><description><![CDATA[cookie、session 简单理解cookie 和 session 的目的是追踪用户会话,标识用户,让服务器知道是谁在访问网站.cookie 是保存在客户端的用户信息,在浏览器首次访问服务器时由服务器创建并发给客户端。浏览器收到cookie后会根据cookie时效，选择将cookie内容保存在内存或硬盘。当浏览器再次访问服务器是会在请求中携带cookie。 
session 是保存在服务端的用户]]></description><category></category></item><item><title><![CDATA[堆排序（heapsort）]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/77717841</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/77717841</guid><author>zhangwang010</author><pubDate>Wed, 30 Aug 2017 16:11:34 +0800</pubDate><description><![CDATA[堆排序堆排序是利用堆结构（特殊的完全二叉树）实现排序的算法，时间复杂度是O（nlogn）。堆排序不稳定。原理堆排序要构建一颗完全二叉树（存储在数组，详见： 二叉树的数组存储），这颗二叉树就是堆。堆有大堆和小堆两种（结构类似）。这里以大堆为例。 
在最大堆中每个节点都比子节点大，根节点最大，每个分枝都是一个堆，叶子节点天然就是堆。 
构成一个堆之后。然后取堆首-重新构建堆-再取… 元素按大到小依次取出]]></description><category></category></item><item><title><![CDATA[基数排序（radixSort）]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/77717139</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/77717139</guid><author>zhangwang010</author><pubDate>Wed, 30 Aug 2017 15:32:58 +0800</pubDate><description><![CDATA[基数排序
基数排序算法的思想很有趣，他不依靠比较排序。而是采用分配式排序。基数排序也称为桶排序。
原理准备10个容器，编号0-9，对应数字0-9。 
  然后按待排序元素的某一位的数字将其存放到对应容器中（数字相同）， 
再将容器中的元素从0号开始顺序收集合并，然后再从下一位开始…这里假设数组元素都是3位数。从个位开始，将数组中的元素按个位数字放入对应的桶中，再从桶中顺序取出到数组，这是数组按个位数]]></description><category></category></item><item><title><![CDATA[快速排序：Quicksort（2）]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/77716051</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/77716051</guid><author>zhangwang010</author><pubDate>Wed, 30 Aug 2017 15:03:04 +0800</pubDate><description><![CDATA[快速排序（1）快速排序是一种不稳定的原地交换排序（据说可以改进），其平均时间复杂度是 O（nlogn）。最坏情况下是O（n^2）。当数组已是有序或接近有序时，是最坏的情况。在示例算法中，总是选取当前块的第一个元素作为key，当数组已经有序时，一趟排序总是把数组分成一个元素和其他元素两部分（没有发挥分治的效果）。这时对n个元素的数组的排序要操作的次数是 n!。所以要避免最坏的情况，key的选择至关重要]]></description><category></category></item><item><title><![CDATA[插入排序]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/75305226</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/75305226</guid><author>zhangwang010</author><pubDate>Tue, 18 Jul 2017 15:08:55 +0800</pubDate><description><![CDATA[原理分析(升序)假定数组第一个数是有序的，从数组下标1开始遍历比较后面的数值。如果遍历到的数x小于排在它前面的数则交换他们，再比较x和x前面的数…直到x前面再也没有比它大的数了，这时x就移动到了有序队列的合适位置。上述比较称为插入。 
《算法导论》里的比喻很合适：“插入排序就像玩扑克牌时的抓牌一样，抓一张牌，就把它插在已有扑克牌的合适位置” 
    注：从数组的第二个数（下标1）开始遍历就是假设第]]></description><category></category></item><item><title><![CDATA[归并排序]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/75304234</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/75304234</guid><author>zhangwang010</author><pubDate>Tue, 18 Jul 2017 14:45:46 +0800</pubDate><description><![CDATA[简单分析：归并排序是典型的用分治思想解决问题的算法, 其基本思想是: 有两个有序数组,从两个数组首端开始比较。将较大或较小的元素加入一个空数组中，同时在原数组中删除。剩下的元素如此重复。最后就将两个有序数组合并成一个有序数组了。这样的过程成为归并。与分治法结合在一起来考虑。如果不断递归拆分数组，直到拆分到最后只有两个元素了，也就是说把一个数组分成两边，一边只有一个元素，这是两边自然是有序的，满足有序]]></description><category></category></item><item><title><![CDATA[交换排序]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/75303882</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/75303882</guid><author>zhangwang010</author><pubDate>Tue, 18 Jul 2017 14:26:30 +0800</pubDate><description><![CDATA[简单描述交换排序是指通过比较键值的大小来交换这两个元素的位置,实现排序. 常见的交换排序有冒泡排序和快速排序. 冒泡排序的时间复杂度度是 O(n^2), 快速排序的时间复杂度度是 O(nlogn), 快速排序是对冒泡排序的改良.但是快速排序是不稳定的冒泡排序原理： 
    通过比较相邻两个数的大小来决定是否交换。 
    一轮比较下来，最右边的数就是最大或最小的，假设数组size=n，则需要n-]]></description><category></category></item><item><title><![CDATA[Huffman树]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/74737738</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/74737738</guid><author>zhangwang010</author><pubDate>Fri, 07 Jul 2017 16:40:07 +0800</pubDate><description><![CDATA[问题的由来:有一组带权节点组成的森林,每个棵树都只有一个节点,其权值是被访问的概率.那么将这个森林合并为一颗二叉树,如何使根节点到这些节点的路径最短(优)?这样的树也叫判定树或选择树,而Huffman树是是判定树的最优实现.
Huffman 树实现原理在森林中每次取两个权值最小的节点,用这两个节点的权值相加得到一个新节点,并成为其的左右子节点.构成一个新的二叉树.重复上述步骤,直到只剩一棵树.这颗树]]></description><category></category></item><item><title><![CDATA[二叉树的数组存储及运算]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/73415966</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/73415966</guid><author>zhangwang010</author><pubDate>Sun, 18 Jun 2017 12:05:51 +0800</pubDate><description><![CDATA[二叉树的数组存储//this is tree node size
#define SIZE 20//求深度
//对于一个数组结构的tree，要先求tree的深度x，求最大指数2^x-1=size = 2^x = size+1 x =  log2 (size+1)
int getHeight2(int size){
    return (int)ceil(log10((double)size+1)/]]></description><category></category></item><item><title><![CDATA[二叉树的链表实现]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/73414571</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/73414571</guid><author>zhangwang010</author><pubDate>Sun, 18 Jun 2017 11:56:14 +0800</pubDate><description><![CDATA[二叉树的链表实现在构建二叉树时使用完全二叉树的特性,所以构建的是一颗完全二叉树打印二叉树打印完全二叉树要使用队列结构保存序列。将根节点存入队列,然后在while循环中将队列的第一个元素出队并将其右孩子和左孩子依次入队(如果不为null),这样的入队的顺序就按层按从左到右的顺序,出队亦是。所以可以通过调整入队顺序改变遍历顺序.以此循环遍历root及其子树,循环的条件是队列不为null.//print]]></description><category></category></item><item><title><![CDATA[树的定义及术语]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/73411925</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/73411925</guid><author>zhangwang010</author><pubDate>Sun, 18 Jun 2017 11:04:12 +0800</pubDate><description><![CDATA[树（tree）的定义简单讲:树就是树,是颜色不一样的烟火…(手动微笑)关于树的术语(摘自百度百科)
  http://baike.baidu.com/link?url=g8V1zMAkQ9cMVxsUJZZpJRT0iBkinqBJWqOUl789tfC3ufE4KvrsHfmwv-2phN9uSYfSeOuAU3QIXvZ2uSTbE2zOFbS55yPr1vc6uU3xHPa节点的度：一个节点含]]></description><category></category></item><item><title><![CDATA[当我在传递指针参数的时候我在传什么?]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/73410730</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/73410730</guid><author>zhangwang010</author><pubDate>Sun, 18 Jun 2017 10:27:51 +0800</pubDate><description><![CDATA[指针传递的时候是值传递.所以create函数接收到的是指针的复制品NULL,create函数用一个新的指针指向了这个NULL.这时create里的指针和外面的指针已经完全不相干了. 所以当它修改复制品指针的指向当然无法传递出函数。]]></description><category></category></item><item><title><![CDATA[VS2010 调试窗口一闪而过解决方法]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/73294210</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/73294210</guid><author>zhangwang010</author><pubDate>Thu, 15 Jun 2017 17:07:31 +0800</pubDate><description><![CDATA[解决方法如下:


若此时进行的操作是编译（F5），可先运行程序（Ctrl+F5），若仍然一闪而过，用下面方法解决。
方法一：
1.若是C++文件，在程序最后写一句（return之前）添加：system("pause");
2.若是C文件，首先在程序头添加头文件：#include"stdlib.h"；然后在程序最后写一句（return之前）添加：system("pause")。
方法]]></description><category></category></item><item><title><![CDATA[矩阵压缩存储]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/73017447</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/73017447</guid><author>zhangwang010</author><pubDate>Sun, 11 Jun 2017 11:04:01 +0800</pubDate><description><![CDATA[对称矩阵的压缩实现原理c二维数组存储在c中矩阵的表示是用二维数组。那么首先要搞清楚数组行列与矩阵行列的对应。在c语言中二维数组是按行存储的。即顺序存储每一行。（第一行，第二行。。。最后一行） 
看一下例子：数组数量替换成arrs[i][j]，方便说明。
int arrs[i][j] = {{1,2,3},
                  {1,2,3},
                  {1]]></description><category></category></item><item><title><![CDATA[线性表之队列]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/72994708</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/72994708</guid><author>zhangwang010</author><pubDate>Sat, 10 Jun 2017 17:08:47 +0800</pubDate><description><![CDATA[队列的数组实现要使用模运算，关于模运算，请参加（...先挖个坑）。其实现原理是通过模运算使数组形成循环。这样就不用因为删除元素而移动数组了。就是数组的任意位置都可以是队列头和尾，
这样当要求一个head+1后的位置的算法是：head = （head+1）模数组长度。要求一个下标-n后的位置的算法是：新下标 = 旧下标+（数组长度-n）模数组长度。]]></description><category></category></item><item><title><![CDATA[线性表之数组实现栈结构]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/72980878</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/72980878</guid><author>zhangwang010</author><pubDate>Sat, 10 Jun 2017 11:14:02 +0800</pubDate><description><![CDATA[用数组实现栈结构实现栈结构的数组实现是用一个一维数组存放数据，数据每次从队尾加入，删除时也从队尾删除，要实现这种增删操作需要使用一个记录下标的指针（top）来指向栈顶。当添加元素时添加到 arr[top+1]位置，当要做删除操作时 使top–；指向倒数第二个元素，使其称为新栈顶。旧栈顶则被忽略，当其所占空间要使用时直接覆盖即可。栈与递归栈是一种很常用的结构，比如函数调用就使用栈结构，当程序执行到函数]]></description><category></category></item><item><title><![CDATA[线性表之链表实现栈结构]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/72935292</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/72935292</guid><author>zhangwang010</author><pubDate>Thu, 08 Jun 2017 21:44:16 +0800</pubDate><description><![CDATA[用链表实现栈结构栈结构简单介绍栈结构通俗来说是元素先进后出，就像一个水瓶，依次往里装东西，最先装进去的被压在下面，要出来时得先拿走上面压着的东西，才能取出来。所以说栈是运算受限的线性表，因为栈只允许在表的一端进行增删。
实现 本文使用单链表来实现栈结构。先构建一个带head 节点的链表，每次添加元素（进栈），使新节点->next指向head->next,使head节点指向新节点。数组结构的实现见下一]]></description><category></category></item><item><title><![CDATA[线性表之双链表]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/72848541</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/72848541</guid><author>zhangwang010</author><pubDate>Fri, 02 Jun 2017 23:09:40 +0800</pubDate><description><![CDATA[明天再写#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct person2{
    char name[10];
    int age;
    struct person2 *next;
    struct person2 *last;}person2;typedef struct linkedL]]></description><category></category></item><item><title><![CDATA[数据结构：线性表之单链表]]></title><link>https://blog.youkuaiyun.com/zhangwang010/article/details/72848519</link><guid>https://blog.youkuaiyun.com/zhangwang010/article/details/72848519</guid><author>zhangwang010</author><pubDate>Fri, 02 Jun 2017 23:05:50 +0800</pubDate><description><![CDATA[单链表实现链表特点：
链表是指一个数据元素含有一个或多个指向另外一个数据元素的指针或引用。称这样的元素为节点。一条链上的节点，多形象。 
链表结构的元素在内存中是分散存放的。不需要连续的存储空间。空间利用率较高。可以动态增加长度。
而由于元素是通过指针联系在一起的，所以插入和删除元素较快，只需要修改插入和删除位置元素的指向即可。这些是链表的优势。
链表的劣势是对元素的访问只能遍历寻找（不包含特殊指向]]></description><category></category></item></channel></rss>