<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[henryhungry的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/henryhungry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; henryhungry]]></copyright><item><title><![CDATA[数据结构与算法 面试题]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/78075959</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/78075959</guid><author>henryhungry</author><pubDate>Sun, 24 Sep 2017 11:45:29 +0800</pubDate><description><![CDATA[所有的题目：
http://blog.youkuaiyun.com/jokes000/article/details/7070520





51题答案：
http://blog.youkuaiyun.com/ylf13/article/details/14519695




60题答案：
http://www.cnblogs.com/byfei/archive/2012/11/12/31]]></description><category></category></item><item><title><![CDATA[堆排序—Java]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/77917129</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/77917129</guid><author>henryhungry</author><pubDate>Sat, 09 Sep 2017 19:06:42 +0800</pubDate><description><![CDATA[package sort;


public class heapSort {
    //  前 n个是大顶堆
    static void percUp(int[] a, int n, int k){
        
        int hole = n + 1; //在数组中排第几个输， index
        while(hole/2 >= 1 && k > a]]></description><category></category></item><item><title><![CDATA[State模式]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/72764739</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/72764739</guid><author>henryhungry</author><pubDate>Fri, 26 May 2017 11:13:45 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/wangjq/archive/2012/07/16/2593485.html]]></description><category></category></item><item><title><![CDATA[有序表的折半查找]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/17589983</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/17589983</guid><author>henryhungry</author><pubDate>Thu, 26 Dec 2013 19:54:17 +0800</pubDate><description><![CDATA[折半查找又称二分查找，其基本思想是，在顺序存储的有序序列中要查找某个关键字，首先用有序序列的中间元素和这个关键字作比较，如果小于关键字，则在上半部分查找，如果大于关键字，则在下半部分查找，如果等于关键字，则返回。不断地重复上述步骤，直到找到要查找的关键字为止，如果所查找区域没有所查找的关键字，则查找失败，返回。
         代码如下：
int Binary_Search(int *a, ]]></description><category></category></item><item><title><![CDATA[快速排序]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/17580773</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/17580773</guid><author>henryhungry</author><pubDate>Thu, 26 Dec 2013 14:06:33 +0800</pubDate><description><![CDATA[快速排序的基本思想：
        在所需要排序的序列中选出一个关键字，将所有小于此关键字的数排列在该关键字左侧，所有大于该关键字的数排列在该关键字的右侧，然后再分别对较大的序列和较小的序列进行相同操作，最后使得整个序列都有序为止。
        首先定义一个结构：
#define MAXSIZE 9
typedef struct
{
	int r[MAXSIZE + 1];
	]]></description><category></category></item><item><title><![CDATA[二分排序法]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16989015</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16989015</guid><author>henryhungry</author><pubDate>Wed, 27 Nov 2013 17:50:33 +0800</pubDate><description><![CDATA[插入排序发的主要思想是将要排序的第i个元素序列插入到前面已经排好的i-1个元素序列中，比较关键的一点是在原序列中找到要插入的位置，直接插入法的想法是将第i个元素从和前面的第i-1，i-2个元素一一作比较，找到要插r入的地方，二分排序的主要想法是通过二分查找法找到前面要插入的地方。实现代码如下：
void BinarySort( int array , int n)
{
	int i , j;]]></description><category></category></item><item><title><![CDATA[一维数组和指针 array、&array[0]和&array的区别]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16985811</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16985811</guid><author>henryhungry</author><pubDate>Wed, 27 Nov 2013 15:01:07 +0800</pubDate><description><![CDATA[char array[5] = {'a','b','c','d','e'};

array的长度和&array[0] 长度是一个字节，都是指向第一个数组元素。array+1的长度和&array[0]+1，都是加一个字节长度，指向第二个元素。
&array的长度是数组的长度是五个字节，（sizeof（array）获取到长度），&array执行数组array。&array+1 是指向数组arra]]></description><category></category></item><item><title><![CDATA[归并算法进行排序]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16921055</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16921055</guid><author>henryhungry</author><pubDate>Sun, 24 Nov 2013 17:48:55 +0800</pubDate><description><![CDATA[归并算法是一种效率较高且稳定的算法，归并算法总是要将序列中的记录都扫描一遍，所以总的时间复杂度为o(nlogn)，这是归并算法中最好、最坏、平均的时间性能。
       递归方式的归并算法：
       首先定义函数 sort(int SR[ ], int s, int t),
void sort(int SR[], int s, int t)
{
	int temp;
	if(SR[s]]></description><category></category></item><item><title><![CDATA[堆排序(参考大话数据结构)]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16852931</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16852931</guid><author>henryhungry</author><pubDate>Thu, 21 Nov 2013 14:56:20 +0800</pubDate><description><![CDATA[堆排序是一种非稳定的排序，属于选择排序类，它的核心是要构建一个大顶堆或者是小顶堆，以大顶堆为例，根节点的值为最大值，交换到数组的最后，然后对1至n-1的元素继续构建一个大顶堆，再将根节点与第n-1个元素交换，如此循环，直到最后数组为有序。
        首先定义要用到的结构：
#define MAXSIZE 10
typedef struct
{
       int r[MAXSIZE +]]></description><category></category></item><item><title><![CDATA[二叉树的建立及遍历]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16828267</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16828267</guid><author>henryhungry</author><pubDate>Tue, 19 Nov 2013 18:41:47 +0800</pubDate><description><![CDATA[首先定义二叉树链表的节点结构：
typedef char TElemType;
typedef struct BiTNode
{
	TElemType data;
	struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
        先序遍历创立二叉树链表，

void CreateBiTree(BiTree *T)
{]]></description><category></category></item><item><title><![CDATA[希尔排序]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16707935</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16707935</guid><author>henryhungry</author><pubDate>Sun, 17 Nov 2013 22:51:25 +0800</pubDate><description><![CDATA[希尔排序的思路是先将序列以某个增量分成几个子序列，然后对这些子序列分别进行插入排序，然后待序列基本有序之后进行整个序列的插入排序，代码如下：
void ShellSort(int Array[], int k)
{
	int gap;
	int tmp;
	int j;
	int i;
	int n;
	for(gap = k/2; gap >=1; gap /=2)
		for(j = 0;]]></description><category></category></item><item><title><![CDATA[直接插入排序]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16362389</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16362389</guid><author>henryhungry</author><pubDate>Sat, 16 Nov 2013 23:39:43 +0800</pubDate><description><![CDATA[直接插入排序的思路是这样的：假设前i个数已经排好，将第i+1个数依次和前面的数进行比较，如果array[i+1]小于array[j]，则将array[i+1]插入到array[j]的前面，插入过程是这样的，将array[i+1]储存到tmp中，然后array[j]到array[i]之间的数后整体后移一位，然后将tmp中的值赋给array[j]。代码如下：
void InsertSort(int]]></description><category></category></item><item><title><![CDATA[简单的选择排序]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16361885</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16361885</guid><author>henryhungry</author><pubDate>Sat, 16 Nov 2013 22:26:03 +0800</pubDate><description><![CDATA[简单选择排序算法，思路是这样的，取一个中间变量min来记录最小的数的下标，第一次循环，i = 1，min的下标首先为1，然后j =2一直遍历[]到数组结束，Array[min]和Array[j]作比较，如果Array[min] > Array[j]，则min = j，j再取下一个数，一直到j遍历到数组的结尾，则此时Array[min]的值为第一次遍历的最小值，Array[min]h和Array[1]]></description><category></category></item><item><title><![CDATA[排序算法的C语言实现以及各个算法的时间复杂度和空间复杂度分析（冒泡排序）]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16116077</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16116077</guid><author>henryhungry</author><pubDate>Sat, 16 Nov 2013 21:15:21 +0800</pubDate><description><![CDATA[排序算法作为一种重要的算法在很多方面有应用，下面用C语言来实现各种排序算法]]></description><category></category></item><item><title><![CDATA[单链表的操作]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16258467</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16258467</guid><author>henryhungry</author><pubDate>Fri, 15 Nov 2013 19:54:50 +0800</pubDate><description><![CDATA[单链表是一种非常重要的数据结构，下面用C语言对单链表的操作做一个简单的总结：
1、单链表的创建：]]></description><category></category></item><item><title><![CDATA[自增运算符“++”的使用注意事项]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/16326567</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/16326567</guid><author>henryhungry</author><pubDate>Thu, 14 Nov 2013 22:28:47 +0800</pubDate><description><![CDATA[自增运算符++的使用有时候会让人混淆，特别是在while循环语句中，稍不注意，就会出现混淆的麻烦。
#include
int main()
{
      int i = 0;
      while( i++ < 10)
             printf("%d ", i);
      return 0;
} 
比如说上面这段代码，最后的输出结果是什么呢？是0，1，2，3，4，5，6]]></description><category></category></item><item><title><![CDATA[C++中的virtual与动态绑定]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/15556439</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/15556439</guid><author>henryhungry</author><pubDate>Tue, 12 Nov 2013 22:28:39 +0800</pubDate><description><![CDATA[面向对象编程基于三个基本概念：数据抽象、继承和动态绑定。在C++中，用类进行数据抽象，用类派生从一个类继承另一个类：派生类继承基类的成员。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。
        继承和动态绑定在两个方面简化了我们的程序：能够容易地定义与其他类相似但又不相同的新类（继承）， 能够更容易地编写忽略这些相似类型之间区别的程序。 （C++ Prim]]></description><category></category></item><item><title><![CDATA[二叉树的遍历]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/15505287</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/15505287</guid><author>henryhungry</author><pubDate>Tue, 12 Nov 2013 17:10:29 +0800</pubDate><description><![CDATA[二叉树的遍历通常有前序遍历、中序遍历和后序遍历，
          前序遍历：
         先访问根节点，再访问左节点，再访问右节点。
         中序遍历：
         先访问左节点，再访问根节点，再访问右节点。
         后序遍历：
         先访问左节点，再访问右节点，再访问根节点。
         前、中、后序遍历的依据主要是根据根节点的]]></description><category></category></item><item><title><![CDATA[sizeof和strlen之间的区别]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/15502697</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/15502697</guid><author>henryhungry</author><pubDate>Tue, 12 Nov 2013 14:59:55 +0800</pubDate><description><![CDATA[sizeof和strlen之间的区别是面试笔试过程中经常会被考到的问题，下面对这两个函数的用法做一下简单小结。
char* ss1 = "0123456789";
char ss2[] = "0123456789"; 
char ss3[100] = "0123456789";
cout 

cout 


输出结果如图所示：

由输出的结果可知，ss1传递给sizeof的是]]></description><category></category></item><item><title><![CDATA[经典的字符数组，字符指针的题（转载）]]></title><link>https://blog.youkuaiyun.com/henryhungry/article/details/15502131</link><guid>https://blog.youkuaiyun.com/henryhungry/article/details/15502131</guid><author>henryhungry</author><pubDate>Tue, 12 Nov 2013 14:36:50 +0800</pubDate><description><![CDATA[const修饰的变量放在哪里？heap or stack

以及下面这个程序




#include

using namespace std;

void main()

{

 char str1[] = "abc";

 char str2[] = "abc";

 const char str3[] = "abc";   

const char]]></description><category></category></item></channel></rss>