08 2017 档案
摘要:选择排序之简单选择排序和堆排序 选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式
阅读全文
摘要:异或有两个很重要的性质: 1、 A^A = 0; 2、A^0 = A; 利用这两个性质,我们就能够利用异或进行两个值的交换。 代码如下:
阅读全文
摘要:C语言中的按位移动及其简单应用 在C语言中按位左移用”<<”表示,按位右移用”>>”表示。 按位左移和按位右移运算经常被用来替换乘二和除二运算,但是要注意,这两者之间并不完全等价。下面就分析一下: 首先明确,按位移动分为逻辑移动和算术移动,具体就是:逻辑左移、算术左移;逻辑右移、算术右移。 算术左移
阅读全文
摘要:插入排序算法 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 直接插入排序 直接插入排序的排序思路
阅读全文
摘要:Linux下C语言处理正则表达式——regex.h 具体函数介绍 编译正则表达式函数 其中preg用于保存编译后的正则表达式,regex是我们写的正则表达式。cflags标志位后面再说。 先说说regex_t结构体: 对于这个结构体而言,我们只要记住,它是编译后的正则表达式,后面的匹配是用编译后的正
阅读全文
摘要:Ssh自学笔记 Ssh简介 传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这
阅读全文
摘要:交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 排序入门之冒泡排序 冒泡排序是典型的交换排序算法。冒泡排序的时间复杂度为O(n2),可以说效率比较低,但是,冒泡排序体现的思想
阅读全文
摘要:红黑树之删除节点 上一篇文章中讲了如何向红黑树中添加节点,也顺便创建了一棵红黑树。今天写写怎样从红黑树中删除节点。 相比于添加节点,删除节点要复杂的多。不过我们慢慢梳理,还是能够弄明白的。 回顾一下红黑树的性质 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以
阅读全文
摘要:红黑树之插入节点 红黑树的性质 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 正是红黑树的这5条性质,使一棵n个结点的红黑树始终保持了logn的高度,从而也就解释了上面所说的“红黑树的查找、插入、删除的时间
阅读全文
摘要:二叉平衡树之删除节点操作 更好的判断最小非平衡树类型的方法 在前一篇文章中,我们知道最小非平衡树可以分为四种类型,即:LL型、LR型、RR型和RL型。而且我也按照自己的理解,归纳了判断是哪种类型的方法。总结一下就是:设最小非平衡树的树根为unbalance,首先看unbalance的左右子树谁更高,
阅读全文
摘要:二叉平衡树的创建 一些废话 最近在重温数据结构以应对即将到来的面试。发现很多当年学过的东西都忘掉了,就拿二叉平衡树来说,看到最后我才恍然大悟:哦,原来这东西我之前真的学过!而且貌似当时也写过测试的代码,只是没有保留下来。这次再整理一下,留在博客里以便查阅,同时也分享给大家,和大家交流一下。 再感慨一
阅读全文