快速排序 三平均划分
摘要:快速排序也是一种采用分治法解决问题的一个典型应用。在很多编程语言中,对数组,列表进行的非稳定排序在内部实现中都使用的是快速排序。而且快速排序在面试中经常会遇到。 本文首先介绍快速排序的思路,算法的实现、分析、优化及改进,最后分析了.NET 中列表排序的内部实现。 一 原理 快速排序的基本思想如下:
阅读全文
posted @
2017-04-28 10:52
莫水千流
阅读(3580)
推荐(0) 编辑
俄罗斯水手 [C#] 对List<T>取交集、连集及差集
摘要:※本文使用int為例,若為使用自訂之DataModel,需實作IEquatable<T>介面才能使用 1. 取交集 (A和B都有) List A : { 1 , 2 , 3 , 5 , 9 } List B : { 4 , 3 , 9 } 1 var intersectedList = list1.
阅读全文
posted @
2017-04-18 08:50
莫水千流
阅读(357)
推荐(0) 编辑
C# 特性(Attribute)(二)
摘要:AttributeUsage类是另外一个预定义特性类,它帮助我们控制我们自己的定制特性的使用。它描述了一个定制特性如和被使用。 AttributeUsage有三个属性,我们可以把它放置在定制属性前面。第一个属性是: ValidOn 通过这个属性,我们能够定义定制特性应该在何种程序实体前放置。一个属性
阅读全文
posted @
2017-04-17 08:35
莫水千流
阅读(1126)
推荐(0) 编辑
C# 特性(Attribute)(一)
摘要:特性(Attributes)是一种崭新的声明性信息。我们不仅可以通过特性来定义设计层面的信息(例如help file, URL for documentation)以及运行时(run-time)信息(例如使XML与class相联系),而且我们还可以利用特性建立自描述(self- describing
阅读全文
posted @
2017-04-17 08:34
莫水千流
阅读(182)
推荐(0) 编辑
cmake
摘要:前言cmake 已经开发了 5,6 年的时间,如果没有 KDE4,也许不会有人或者 Linux 发行版本重视cmake,因为除了 Kitware 似乎没有人使用它。通过 KDE4 的选型和开发,cmake 逐渐进入了人们的视线,在实际的使用过程中,cmake 的优势也逐渐的被大家所认识,至少 KDE
阅读全文
posted @
2017-04-16 09:01
莫水千流
阅读(1235)
推荐(0) 编辑
python - 增强的格式化字符串format函数
摘要:语法 它通过{}和:来代替%。 “映射”示例 通过位置 通过下标 格式限定符 它有着丰富的的“格式限定符”(语法是{}中带:号),比如: 填充与对齐 填充常跟对齐一起使用 ^、<、>分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充 比如 精度与
阅读全文
posted @
2017-04-12 23:30
莫水千流
阅读(370)
推荐(0) 编辑
Python 批量修改图片格式和尺寸
摘要:公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图片的输入路径和输出路径,而且每次都只能处理一个文件夹,很繁琐,于是我想到了万能的Python,然后写
阅读全文
posted @
2017-04-12 21:59
莫水千流
阅读(1319)
推荐(0) 编辑
c++ placement new概念
摘要:参考:http://www.cnblogs.com/Clingingboy/archive/2013/04/26/3044910.html 转:http://bbs.chinaunix.net/thread-1015707-1-1.html 问题:什么是“定位放置new(placement new)
阅读全文
posted @
2017-04-11 15:53
莫水千流
阅读(696)
推荐(0) 编辑
xcopy
摘要:XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [
阅读全文
posted @
2017-04-11 10:48
莫水千流
阅读(346)
推荐(0) 编辑
STL List::sort() 解析
摘要:看侯捷翻译那本《STL源码剖析》中list内置sort的算法,书中注释说是quick sort,看了半天没看明白, template <class T, class Alloc> template <class T, class Alloc> void list<T, Alloc>::sort()
阅读全文
posted @
2017-04-06 08:57
莫水千流
阅读(1300)
推荐(0) 编辑
STL sort 函数实现详解 ZZ
摘要:前几天阿里电话一面,被问到STL中sort函数的实现。以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不对劲,知道自己回答错了。这几天特意看了一下,在此记录。 函数声明 #include <algorithm> template< class Ran
阅读全文
posted @
2017-04-06 08:52
莫水千流
阅读(463)
推荐(1) 编辑
operator++()和operator++(int)的区别
摘要:很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载increment 和 decrement操作符的两种形式。 然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decre
阅读全文
posted @
2017-04-05 14:41
莫水千流
阅读(4270)
推荐(0) 编辑
浅谈算法和数据结构: 九 平衡查找树之红黑树
摘要:前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)
阅读全文
posted @
2017-04-05 13:06
莫水千流
阅读(630)
推荐(0) 编辑
示平衡二叉树旋转
摘要:下面对本算法做原理上的介绍: 1、 如何回溯修改祖先结点的平衡因子 我们知道,在AVL树上插入一个新结点后,有可能导致其他结点BF值的改变,哪些结点的BF值会被改变?如何计算新的BF值呢?要解决这些问题,我们必须理解以下几个要点: l 只有根结点到插入结(橙色结点)点路径(称为插入路径)上的结点的B
阅读全文
posted @
2017-04-05 09:08
莫水千流
阅读(676)
推荐(0) 编辑
以AVL树为例理解二叉树的旋转(Rotate)操作
摘要:树旋转是在二叉树中的一种子树调整操作, 每一次旋转并不影响对该二叉树进行中序遍历的结果. 树旋转通常应用于需要调整树的局部平衡性的场合. 树旋转包括两个不同的方式, 分别是左旋转和右旋转. 两种旋转呈镜像, 而且互为逆操作. 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡
阅读全文
posted @
2017-04-05 08:56
莫水千流
阅读(1120)
推荐(0) 编辑
do{...}while(0)的意义和用法
摘要:linux内核和其他一些开源的代码中,经常会遇到这样的代码: do{ ... }while(0) do{ ... }while(0) 这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实际上,do{...}while(0)的作用远大于美化你的代码。查
阅读全文
posted @
2017-04-01 11:19
莫水千流
阅读(350)
推荐(0) 编辑