<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[interesting_code的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/interesting_code</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; interesting_code]]></copyright><item><title><![CDATA[C语言字符与字符串]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/112161461</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/112161461</guid><author>interesting_code</author><pubDate>Sun, 03 Jan 2021 23:29:18 +0800</pubDate><description><![CDATA[字符
首先我们知道字符类型的数据是用char来定义的，一个字符占一个字节，且字符类型其实是一种特殊的整型或者说整型是一种特殊的字符类型
#include &lt;stdio.h&gt;
int main()
{
	char a=172;
	int b='f';
	printf("%c,%d",a,b);
}

若上述代码所示，无论你是用int去定义一个变量，变量里放着一个字符还是用char去定义一个变量，变量里放着一个整数，编译都不会报错，区别只在于最后的输出，%c输出字符类型，但底层是编译器去找ASCLL]]></description><category></category></item><item><title><![CDATA[加油！奋斗]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104646979</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104646979</guid><author>interesting_code</author><pubDate>Wed, 04 Mar 2020 09:19:36 +0800</pubDate><description><![CDATA[这篇博客就是提醒自己，加油努力，在剩下的这9个多月的时间，坚持下去，考研加油！

]]></description><category></category></item><item><title><![CDATA[克鲁斯卡尔算法生成最小生成树]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104446283</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104446283</guid><author>interesting_code</author><pubDate>Sat, 22 Feb 2020 17:05:23 +0800</pubDate><description><![CDATA[克鲁斯卡尔算法的介绍
1)克鲁斯卡尔(Kruskal)算法，是用来求加权连通图的最小生成树的算法。
2)基本思想：按照权值从小到大的顺序选择    n-1条边，并保证这  n-1条边不构成回路
3)具体做法：首先构造一个只含    n个顶点的森林，然后依权值从小到大从连通网中选择边加入到森林中，并使森林中不产生回路，直至森林变成一棵树为止
首先我们得明白，在解决求最小生成树的算法里，主要就是克鲁斯...]]></description><category></category></item><item><title><![CDATA[普利姆算法生成最小生成树]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104445718</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104445718</guid><author>interesting_code</author><pubDate>Sat, 22 Feb 2020 16:45:19 +0800</pubDate><description><![CDATA[普里姆算法介绍
普利姆(Prim)算法求最小生成树，也就是在包含 n个顶点的连通图中，找出只有(n-1)条边包含所有  n个顶点的连通子图，也就是所谓的极小连通子图
什么是最小生成树
最小生成树(Minimum  Cost Spanning Tree)，简称 MST。给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树，如图

简而言之，最小生成树就是将图中所...]]></description><category></category></item><item><title><![CDATA[贪心算法举例详解]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104436200</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104436200</guid><author>interesting_code</author><pubDate>Fri, 21 Feb 2020 22:37:48 +0800</pubDate><description><![CDATA[什么是贪心算法
其实我个人觉得贪心算法还是很好理解的，起码比KMP好理解多了。。。。
1)贪婪算法(贪心算法)是指在对问题进行求解时，在每一步选择中都采取最好或者最优     (即最有利)的选择，从而希望能够导致结果是最好或者最优的算法
2)贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解)，但是都是相对近似(接近)最优解的结果
贪心算法的应用-集合覆盖
可能介绍了贪心算法的定义，大家不是...]]></description><category></category></item><item><title><![CDATA[动态规划算法解决背包问题]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104425727</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104425727</guid><author>interesting_code</author><pubDate>Fri, 21 Feb 2020 13:11:02 +0800</pubDate><description><![CDATA[什么是动态规划算法
1)动态规划(Dynamic    Programming)算法的核心思想是：将大问题划分为小问题进行解决，从而一步步获取最优解的处理算法
2)动态规划算法与分治算法类似，其基本思想也是将待求解问题分解成若干个子问题，先求解子问题，然后从这些子问题的解得到原问题的解。
3)与分治法不同的是，适合于用动态规划求解的问题，经分解得到子问题往往不是互相独立的。 (即下一个子阶段的求解...]]></description><category></category></item><item><title><![CDATA[分治算法思想及经典案例]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104419043</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104419043</guid><author>interesting_code</author><pubDate>Thu, 20 Feb 2020 22:03:27 +0800</pubDate><description><![CDATA[分治算法介绍
1)分治法是一种很重要的算法。字面上的解释是“分而治之”，就是把一个复杂的问题分成两个或更多的相同或相似的子问题，再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解，原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础，如排序算法(快速排序，归并排序)，傅立叶变换(快速傅立叶变换)……
2)分治算法可以求解的一些经典问题
二分搜索
大整数乘法
棋盘覆盖
合并...]]></description><category></category></item><item><title><![CDATA[图的小结及深度优先和广度优先遍历]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104417756</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104417756</guid><author>interesting_code</author><pubDate>Thu, 20 Feb 2020 21:15:39 +0800</pubDate><description><![CDATA[什么是图
前面我们学了线性表和树，线性表局限于一个直接前驱和一个直接后继的关系
树也只能有一个直接前驱也就是父节点，当我们需要表示多对多的关系时，这里我们就用到了图。
图是一种数据结构，其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。如图

图的常用概念
1)顶点(vertex):顶点就是图的每一个点
2)边(edge)：两个顶点若能相连，连的线就是一个边
3)路...]]></description><category></category></item><item><title><![CDATA[平衡二叉树(AVL)的左旋转右旋转和双旋转]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104391985</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104391985</guid><author>interesting_code</author><pubDate>Wed, 19 Feb 2020 14:12:42 +0800</pubDate><description><![CDATA[平衡二叉树的介绍
首先，咱们先来说一下为什么要提出平衡二叉树的概念，如果一个二叉排序树是一个只有左子树或者右子树的二叉排序树的时候，其实它就相当于一个链表，但是他的查询，删除，遍历的速度却没有链表快。这是为什么呢。因为在每次查询，删除，遍历的时候，要去判断他的左节点或者右节点是否为null，所以浪费了时间。所以我们提出平衡二叉树的概念
基本介绍
1)平衡二叉树也叫平衡二叉搜索树（Self-bala...]]></description><category></category></item><item><title><![CDATA[二叉排序树(节点的添加-遍历-删除)]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104391794</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104391794</guid><author>interesting_code</author><pubDate>Wed, 19 Feb 2020 13:46:55 +0800</pubDate><description><![CDATA[二叉排序树的简介
二叉排序树：BST: (Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点，要求左子节点的值比当前节点的值小，右子节点的值比当前节点的值大。
特别说明：如果有相同的值，可以将该节点放在左子节点或右子节点
比如针对据  (7, 3, 10, 12, 5, 1, 9)，对应的二叉排序树为：

二叉排序树创建和遍历
一个数组创建成对应的二叉排序树，并...]]></description><category></category></item><item><title><![CDATA[赫夫曼树小结]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104357675</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104357675</guid><author>interesting_code</author><pubDate>Mon, 17 Feb 2020 14:28:48 +0800</pubDate><description><![CDATA[赫夫曼树的介绍
给定n个权值作为  n个叶子结点，构造一棵二叉树，若该树的带权路径长度(wpl)达到最小，称这样的二叉树为最优二叉树，也称为哈夫曼树(Huffman Tree),还有的书翻译为霍夫曼树。
赫夫曼树是带权路径长度最短的树，权值较大的结点离根较近
赫夫曼树几个重要概念
1)路径和路径长度：在一棵树中，从一个结点往下可以达到的孩子或孙子结点之间的通路，称为路径。通路中分支的数目称为路径长...]]></description><category></category></item><item><title><![CDATA[排序算法小结6——堆排序(详细图解)]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104356671</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104356671</guid><author>interesting_code</author><pubDate>Mon, 17 Feb 2020 13:29:14 +0800</pubDate><description><![CDATA[什么是堆
堆是具有以下性质的完全二叉树：每个结点的值都大于或等于其左右孩子结点的值，称为大顶堆, 注意 :没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值，称为小顶堆
大顶堆图示

小顶堆图示:

堆排序的基本介绍
堆排序是利用堆这种数据结构而设计的一种排序算法，堆排序是一种选择排序，它的最坏，最好，平均时间复杂度均为 O(nlogn)，它也是不稳定排序。...]]></description><category></category></item><item><title><![CDATA[二叉树小结]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104333174</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104333174</guid><author>interesting_code</author><pubDate>Sat, 15 Feb 2020 21:12:52 +0800</pubDate><description><![CDATA[什么是树
在了解二叉树之前我们先来认识一下什么是树。
树是一种数据结构，它是由n（n&gt;=1）个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树，也就是说它是根朝上，而叶朝下的。它具有以下的特点：每个结点有零个或多个子结点；没有父结点的结点称为根结点；每一个非根结点有且只有一个父结点；除了根结点外，每个子结点可以分为多个不相交的子树；它是一种插入数据效率比链表高，...]]></description><category></category></item><item><title><![CDATA[斐波那契查找(黄金分割法)超详细详解]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104322118</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104322118</guid><author>interesting_code</author><pubDate>Sat, 15 Feb 2020 00:48:56 +0800</pubDate><description><![CDATA[斐波那契查找思路
说句实在话，这个斐波那契查找我看了不下5遍才理解他的思路和代码，因为它里面的值太多，不好理解容易绕晕，所以我给大家用自己的理解讲一下
什么是斐波那契
要想学会斐波那契查找，首先你得知道什么是斐波那契数列
斐波那契数列，又称黄金分割数列，指的是这样一个数列：1、1、2、3、5、8、13、21、····，在数学上，斐波那契被递归方法如下定义：F(1)=1，F(2)=1，F(n)=f(...]]></description><category></category></item><item><title><![CDATA[插值查找算法详解]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104322026</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104322026</guid><author>interesting_code</author><pubDate>Sat, 15 Feb 2020 00:16:14 +0800</pubDate><description><![CDATA[插值查找思路
其实说实话，插值查找和二分查找区别并不大，唯一的区别就在于插值查找的中间值不再是(left+right)/2,因为这样定义的中间值可以说与我们的目标值真的毫无关系，查找起来效率太低，而插值查找却是将中间值。。。咳咳，这时候不应该叫中间值，叫划分序列的值，插值查找却是将划分序列的值经过一个数学公式和目标值自适应起来，虽然我并不理解这个公式的原理，，，，
下面直接上图

将它改完后，剩余...]]></description><category></category></item><item><title><![CDATA[二分查找算法详解及优化]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104321864</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104321864</guid><author>interesting_code</author><pubDate>Sat, 15 Feb 2020 00:01:24 +0800</pubDate><description><![CDATA[二分查找算法的思路
在进行二分查找之前我们首先要明确一点，那就是要想使用二分查找，给的必须是一个有序序列，否则此方法无效
二分查找的思路其实很简单，就是将给定的序列从中间数分成两份，左边这一份都比中间数小，右边这一份都比中间数大，然后我们将要找的值和这个中间值比较大小，如果目标值比中间值大，说明目标值在右边这一份里，这时我们只需将右边这一份当作一个新的有序数组，再从其中间值分成两份，然后继续比较（...]]></description><category></category></item><item><title><![CDATA[常用排序算法的时间复杂度和稳定性]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104312164</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104312164</guid><author>interesting_code</author><pubDate>Fri, 14 Feb 2020 14:48:28 +0800</pubDate><description><![CDATA[如题，见图

名词解释：
1)稳定：如果    a原本在  b前面，而 a=b，排序之后 a仍然在  b的前面；
2)不稳定：如果    a原本在  b的前面，而 a=b，排序之后 a可能会出现在  b的后面；
3)内排序：所有排序操作都在内存中完成；
4)外排序：由于数据太大，因此把数据放在磁盘中，而排序通过磁盘和内存的数据传输才能进行；
5)时间复杂度：一个算法执行所耗费的时间。
6)空间复杂...]]></description><category></category></item><item><title><![CDATA[排序算法小结5——基数排序(桶排序)]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104310345</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104310345</guid><author>interesting_code</author><pubDate>Fri, 14 Feb 2020 13:20:32 +0800</pubDate><description><![CDATA[1.基数排序(桶排序)介绍:
1)基数排序（radix    sort）属于“分配式排序”（distribution sort），又称“桶子法”（bucket sort）或 bin sort，顾名思义，它是通过键值的各个位的值，将要排序的元素分配至某些“桶”中，达到排序的作用
2)基数排序法是属于稳定性的排序，基数排序法的是效率高的稳定性排序法
3)基数排序(Radix    Sort)是桶排序的...]]></description><category></category></item><item><title><![CDATA[排序算法小结4——归并排序]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104294289</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104294289</guid><author>interesting_code</author><pubDate>Thu, 13 Feb 2020 13:22:35 +0800</pubDate><description><![CDATA[归并排序介绍
归并排序（MERGE-SORT）是利用归并的思想实现的排序方法，该算法采用经典的分治（divide-and-conquer）策略（分治法将问题分(divide)成一些小的问题然后递归求解，而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起，即分而治之)。
归并排序算法的思路及过程
过程:将原数组从中间分开，以中间的数为区分，分为左边的数组和右边的数组，然后通过递归将左...]]></description><category></category></item><item><title><![CDATA[排序算法小结3——快速排序]]></title><link>https://blog.youkuaiyun.com/interesting_code/article/details/104293987</link><guid>https://blog.youkuaiyun.com/interesting_code/article/details/104293987</guid><author>interesting_code</author><pubDate>Thu, 13 Feb 2020 13:06:00 +0800</pubDate><description><![CDATA[快速排序的介绍
快速排序（Quicksort）是对冒泡排序的一种改进。基本思想是：通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列
快速排序的思路图
快速排序的过程和思路其实很简单，假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个...]]></description><category></category></item></channel></rss>