摘要: 经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort ...阅读全文
posted @ 2011-11-23 14:46 kkun 阅读(3432) 评论(27) 编辑
摘要: 1: var n3 = 52.3685; 2: document.writeln(n3 >> 0);// 52 3: 可以去掉小数。如上代码,就是这么简单右移位操作导致小数部分丢失,为何会这样呢?左移位可以吗?移位操作是否都有如此功能呢?带着疑问又写了一段代码用来测试以上想法,继续上代码 1: { 2: n = 52.123456; 3: //...阅读全文
posted @ 2012-01-30 17:53 kkun 阅读(114) 评论(0) 编辑
摘要: 封装Encapsulation 如下代码,这就算是封装了 (function (windows, undefined) { var i = 0;//相对外部环境来说,这里的i就算是封装了 })(window, undefined);继承Inheritance (function (windows, undefined) { //父类 function ...阅读全文
posted @ 2012-01-06 16:48 kkun 阅读(145) 评论(0) 编辑
摘要: 父亲下班回家已经很晚了,身体疲倦、心情也不太好。这时,他发现5岁的儿子正靠在门边等他。 “我可以问你一个问题吗?”儿子问。 “什么问题?”父亲有些不耐烦。 “爸,你1小时能挣多少钱?” “这与你无关。为什么要问这样的问题?”父亲生气地说。 “我只是想知道。”儿子望着父亲,恳求道:“请告诉我,你1小时挣多少钱?” “假如你一定要知道的话,那我就告诉你吧。我1小时挣20美元。”...阅读全文
posted @ 2011-12-15 13:16 kkun 阅读(31) 评论(0) 编辑
摘要: 经典排序算法 - 图书馆排序(Library Sort) 思路简介,大概意思是说,排列图书时,如果在每本书之间留一定的空隙,那么在进行插入时就有可能会少移动一些书,说白了就是在插入排序的基础上,给书与书之间留一定的空隙,这个空隙越大,需要移动的书就越少,这是它的思路,用空间换时间 看红线标的那句话知道,这个空隙留多大,你自己定 图书馆排序的关键是分配空间,分配完空间后直接使用插入排序即可 ...阅读全文
posted @ 2011-12-05 10:01 kkun 阅读(89) 评论(0) 编辑
摘要: 经典排序算法 - Cycle Sort Cycle sort的思想与计数排序太像了,理解了基数排序再看这个会有很大的帮助, 圈排序与计数排序的区别在于圈排序只给那些需要计数的数字计数,先看完文章吧,看完再回来理解这一句话 所谓的圈的定义,我只能想到用例子来说明,实在不好描述 待排数组[ 6 2 4 1 5 9 ] 排完序后[ 1 2 4 5 6 9 ] 数组索引[ 0 1 2 3 4 ...阅读全文
posted @ 2011-11-28 17:50 kkun 阅读(61) 评论(0) 编辑
摘要: 经典排序算法 - Strand Sort Strand sort是思路是这样的,它首先需要一个空的数组用来存放最终的输出结果,给它取个名字叫"有序数组" 然后每次遍历待排数组,得到一个"子有序数组",然后将"子有序数组"与"有序数组"合并排序 重复上述操作直到待排数组为空结束 看例子吧 待排数组[ 6 2 4 1 5 9 ] 第一趟遍历得到"子有序数组"[ 6 9],并将其归并排...阅读全文
posted @ 2011-11-24 13:32 kkun 阅读(65) 评论(0) 编辑
摘要: 经典排序算法 - Flash Sort FlashSort依然类似桶排,主要改进了对要使用的桶的预测,或者说,减少了无用桶的数量从而节省了空间,例如 待排数字[ 6 2 4 1 5 9 100 ]桶排需要100个桶,而flash sort则由于可以预测桶则只需要7个桶 即待排数组长度个桶,如何预测将要使用的桶有这么一个公式 该排序有前置条件,需要知道待排数组的区间和待排数组的长度, ...阅读全文
posted @ 2011-11-24 13:14 kkun 阅读(72) 评论(0) 编辑
摘要: 经典排序算法 - Proxmap Sort 这个排序是桶排序和基数排序的改进,理解了前两者,这个排序很容易理解 先回忆下桶排序是怎么回事,它与桶的区别在于入桶规则,桶排序里是1入1号桶,2入2号桶 这个排序把数字分区了,然后给出一个所谓的键,例如它规定0-9都入0号桶 10-19都入1号桶,这样桶覆盖的范围将增大10倍,这在某种情况下是很有用的 有了桶排的基础后,再看下边两张图就什么都明...阅读全文
posted @ 2011-11-24 10:02 kkun 阅读(90) 评论(0) 编辑
摘要: 经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort ...阅读全文
posted @ 2011-11-23 14:46 kkun 阅读(3432) 评论(27) 编辑
摘要: 经典排序算法 - 计数排序Counting sort 注意与基数排序区分,这是两个不同的排序 计数排序的过程类似小学选班干部的过程,如某某人10票,作者9票,那某某人是班长,作者是副班长 大体分两部分,第一部分是拉选票和投票,第二部分是根据你的票数入桶 看下具体的过程,一共需要三个数组,分别是待排数组,票箱数组,和桶数组 var unsorted = new int[] { 6, 2, ...阅读全文
posted @ 2011-11-23 14:40 kkun 阅读(182) 评论(2) 编辑
摘要: 经典排序算法 - 珠排序Bead Sort 珠排序非常另类[地精也很另类],看完你就知道了,先介绍思路,再分解过程 这是它的英文论文 http://www.cs.auckland.ac.nz/~jaru003/research/publications/journals/beadsort.pdf 截图即从上边的论文里抓的屏 先了解一个概念,不然不容易理解,一个数字3用3个1来表示 一个数...阅读全文
posted @ 2011-11-23 14:40 kkun 阅读(129) 评论(2) 编辑
摘要: 经典排序算法 - 耐心排序Patience Sorting 这个排序的关键在建桶和入桶规则上 建桶规则:如果没有桶,新建一个桶;如果不符合入桶规则那么新建一个桶 入桶规则:只要比桶里最上边的数字小即可入桶,如果有多个桶可入,那么按照从左到右的顺序入桶即可 举个例子,待排数组[6 4 5 1 8 7 2 3] 第一步,取数字6出来,此时一个桶没有,根据建桶规则1新建桶,将把自己放进去...阅读全文
posted @ 2011-11-23 14:39 kkun 阅读(118) 评论(0) 编辑
摘要: 经典排序算法 - 梳排序Comb sort 梳排序还是基于冒泡排序,与冒泡不同的是,梳排序比较的是固定距离处的数的比较和交换,类似希尔那样 这个固定距离是待排数组长度除以1.3得到近似值,下次则以上次得到的近似值再除以1.3,直到距离小至3时,以1递减 不太好描述,还是看例子吧 假设待数组[8 4 3 7 6 5 2 1] 待排数组长度为8,而8÷1.3=6,则比较8和2,4和1,并做交...阅读全文
posted @ 2011-11-23 14:39 kkun 阅读(93) 评论(2) 编辑
摘要: 经典排序算法 - 奇偶排序Odd-even sort 又一个比较性质的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组[6 2 4 1 5 9] 第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比,4和1比,5和9比 [6 2 4 1 5 9] 交换后变成 [2 6 1 4 5 9] 第二次比较偶数列,即6和1比,5和...阅读全文
posted @ 2011-11-23 14:39 kkun 阅读(142) 评论(0) 编辑
摘要: 经典排序算法 - 地精排序Gnome Sort 号称最简单的排序算法,只有一层循环,默认情况下前进冒泡,一旦遇到冒泡的情况发生就往回冒,直到把这个数字放好为止 直接看它排序的过程,待排数组[6 2 4 1 5 9] 先设计一个标识i=0然后从头开始判断,什么时候(i < 6)不成立,什么时候排序结束, 所以,如何控制i的值是这个算法的关键 例如待排数组: [6 2 4 1 5 9] ...阅读全文
posted @ 2011-11-23 14:39 kkun 阅读(158) 评论(0) 编辑
摘要: 经典排序算法 - 堆排序Heap sort 堆排序有点小复杂,分成三块 第一块,什么是堆,什么是最大堆 第二块,怎么将堆调整为最大堆,这部分是重点 第三块,堆排序介绍 第一块,什么是堆,什么是最大堆 什么是堆 这里的堆(二叉堆),指得不是堆栈的那个堆,而是一种数据结构。 堆可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,...阅读全文
posted @ 2011-11-23 14:38 kkun 阅读(195) 评论(1) 编辑
摘要: 经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第一块希尔排序介绍 准备待排数组[6 2 4 1 5 9] 首先需要选取关键字,例如关键是3和1(第一步分成三组,第二步分成一组),那么待排数组分成了以下三个虚拟组: [6 1]一组 [...阅读全文
posted @ 2011-11-23 14:38 kkun 阅读(267) 评论(0) 编辑
摘要: 经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代,5 > 1交换 [2 3 4 ...阅读全文
posted @ 2011-11-23 14:38 kkun 阅读(195) 评论(0) 编辑
摘要: 经典排序算法 - 选择排序Selection sort 顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 再简单点,对着一群数组说,你们谁最小出列,站到最后边 然后继续对剩余的无序数组说,你们谁最小出列,站到最后边 再继续刚才的操作,一直到最后一个,继续站到最后边,现在数组有序了,从小到大 举例 先说看每步的状态变...阅读全文
posted @ 2011-11-23 14:37 kkun 阅读(149) 评论(0) 编辑
摘要: 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第一次两两比较6...阅读全文
posted @ 2011-11-23 14:36 kkun 阅读(289) 评论(0) 编辑
摘要: 经典排序算法 - 归并排序Merge sort 原理,把原始数组分成若干子数组,对每一个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组 举例 无序数组[6 2 4 1 5 9] 先看一下每个步骤下的状态,完了再看合并细节 第一步 [6 2 4 1 5 9]原始状态 第二步 [2 6] [1 4] [5 9]两两合并排序,排序细节后边介绍 ...阅读全文
posted @ 2011-11-23 14:35 kkun 阅读(218) 评论(2) 编辑
摘要: 经典排序算法 - 鸽巢排序Pigeonhole sort 原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了] 鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现次数,如果全部为1次或0次那就是桶排序 例如 var pigeonHole = new int[100]; pigeonHole[0]的值表示0的出现次数... pigeonHole[1]...阅读全文
posted @ 2011-11-23 14:35 kkun 阅读(213) 评论(0) 编辑
摘要: 经典排序算法 - 基数排序Radix sort 原理类似桶排序,这里总是需要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数 例如 待排序数组[62,14,59,88,16]简单点五个数字 分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样 | 0 | 0 | 62 | 0 | 14 | 0 ...阅读全文
posted @ 2011-11-23 14:35 kkun 阅读(223) 评论(2) 编辑
摘要: 经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。 图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。 代码 public c...阅读全文
posted @ 2011-11-23 14:34 kkun 阅读(296) 评论(0) 编辑
摘要: 经典排序算法 - 桶排序Bucket sort 补充说明三点 1,桶排序是稳定的 2,桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 3,桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 我自己的理解哈,可能与网上说的有一些出入,大体都是同样的原理 无序数组有个要求,就是成员隶属于固定(有限的)的区间,如范围为[0-9](考试分数为1-100等) ...阅读全文
posted @ 2011-11-23 14:34 kkun 阅读(467) 评论(4) 编辑
摘要: 经典排序算法 - 快速排序Quick sort 原理,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 举个例子 如无序数组[6 2 4 1 5 9] a),先把第一项[6]取出来, 用[6]依次与其余项进行比较, 如果比[6]小就放[6...阅读全文
posted @ 2011-11-23 14:34 kkun 阅读(1032) 评论(3) 编辑
摘要: 我有一个梦想 I Have a Dream通天的梯子造一个通天的梯子,老高了,直接通到云彩上边,然后爬上去,看看天上是什么样子的,当时都想过上边肯定特别冷,要多穿件衣服,并且一定特别小心,因为高嘛,样子难免会晃,万一掉下来死定了但这有个问题就是这么大一梯子靠在哪,后来同事出一招说整个人字形的,我再修正为三角支架形,终于解开了多年的迷惑,透气的井想挖口井,一直挖到美国,然后一跳就到美国了,省飞票钱了,不过要小心碰伤了,所要穿防护,而且由于地心温度特别高,所以还要隔热,后来想了想,宇航服应该可以胜任,只是怕美国那边不干,单线程的,一个人跳完了给个信号第二个人再跳,预防交通阻塞,需要注意的是,这边是阅读全文
posted @ 2011-10-24 11:58 kkun 阅读(40) 评论(1) 编辑
摘要: 这一篇很简单,看代码: USE Dorben GO BEGIN TRY -- Generate a divide-by-zero error. SELECT 1/0; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber...阅读全文
posted @ 2011-08-23 16:23 kkun 阅读(41) 评论(0) 编辑
摘要: 这次的测试数据稍有复杂,先看下SQL脚本: CREATE TABLE Person( ID INT IDENTITY(1,1) NOT NULL, Name NVARCHAR(20) NOT NULL DEFAULT(''), Age INT DEFAULT(0) NOT NULL, Sex BIT DEFAULT(0) N...阅读全文
posted @ 2011-08-23 14:45 kkun 阅读(70) 评论(0) 编辑
摘要: 本篇仅介绍最简单的XML操作,FOR XML AUTO F1帮助中是这么描述滴: FOR XML 模式可以是 RAW、AUTO、EXPLICIT 或 PATH。它确定产生的 XML 的形状。 并且还有这么段重要提示: 不推荐使用 FOR XML 选项的 XMLDATA 指令。如果是 RAW 和 AUTO 模式,请使用 XSD 生成。在 EXPLICIT 模式下,没有 XMLD...阅读全文
posted @ 2011-08-22 09:12 kkun 阅读(76) 评论(0) 编辑
摘要: PIVOT在帮助中这样描述滴: 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表。PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合。UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列值。 简单点理解就是行变列,UNPIVOT则是列变行,一个一个看 测试用的数据及表结构:...阅读全文
posted @ 2011-08-19 14:32 kkun 阅读(147) 评论(0) 编辑
摘要: 同事的一道面试题: 如何将某表中的某字段以逗号分隔拼接起来 在给出答案前,先给出测试用数据,与之前的几篇一样: --DROP TABLE T CREATE TABLE T(GRP_A VARCHAR(20),GRP_B VARCHAR(20),GRP_C VARCHAR(20),VAL INT) INSERT INTO T(GRP_A,GRP_B,GRP_C,VAL) SELECT 'a1','b...阅读全文
posted @ 2011-08-17 15:50 kkun 阅读(102) 评论(0) 编辑
摘要: 网上盛传着三个版本,分别来看下 版本1 http://bernardstudios.com/select-day-of-week-name-using-t-sql/ SELECT CASE (DATEPART(dw, GETDATE()) + @@DATEFIRST) % 7 WHEN 1 THEN 'Sunday' WHEN 2 THEN 'Monday' WHEN 3 THEN 'Tuesda...阅读全文
posted @ 2011-08-17 13:16 kkun 阅读(90) 评论(0) 编辑
摘要: NTILE这个关键字干啥妮?ORACLE管它叫分片,大概意思是把查询出来的结果集分成尽量均等的组(片),有点不直观,来看代码 先看测试用的数据表: --DROP TABLE T CREATE TABLE T(GRP_A VARCHAR(20),GRP_B VARCHAR(20),GRP_C VARCHAR(20),VAL INT) INSERT INTO T(GRP_A,GRP_B,GRP_C,V...阅读全文
posted @ 2011-08-15 17:46 kkun 阅读(64) 评论(0) 编辑
摘要: RANK函数为SQL2K5版本中新增,功能为:返回结果集的分区内每行的排名。行的排名是相关行之前的排名数加一 先来造基础数据,与之前ROW_NUMBER函数的数据表一样,但数据不一样,完整脚本如下 --DROP TABLE T CREATE TABLE T(GRP_A VARCHAR(20),GRP_B VARCHAR(20),GRP_C VARCHAR(20),VAL INT) INSERT I...阅读全文
posted @ 2011-08-12 13:39 kkun 阅读(31) 评论(0) 编辑
摘要: ROW_NUMBER()在SQL2K5版本中新增,该函数返回结果集分区内行的序列号,每个分区的第一行从 1 开始,连续不间断,后跟OVER BY子句或者PARTITION BY子句 先构造一张表,放一些数据进行,SQL脚本如下 --DROP TABLE T CREATE TABLE T(GRP_A VARCHAR(20),GRP_B VARCHAR(20),GRP_C VARCHAR(20),VA...阅读全文
posted @ 2011-08-12 13:23 kkun 阅读(82) 评论(0) 编辑
摘要: 看到某段代码,不懂:SELECT GROUPING(GRP_A), GRP_A,GRP_B,COUNT(0)FROM TGROUP BY GROUPING SETS(GRP_A,GRP_B)于是百度,GOOGLE,MSDN,F1大概有点明白了,是个高级货,GROUP BY 的高级功能,Inside Microsoft® SQL Server™ 2005 T-SQL Querying中这么解释的,也蛮准确CUBE | ROLLUP: Supergroups (groups of groups)MSSQL2K5新增的关键字,汗颜,6年过去了,今天才知道天地间有这么个东西心急的...阅读全文
posted @ 2011-08-10 13:47 kkun 阅读(561) 评论(2) 编辑
摘要: 微观管理(Micromanagement)是专门研究微观管理方法、管理工具、管理技巧的一门学问。 微观管理通过对人和事的管理,促成人际协调、人事匹配,充分发挥人的潜能、计划、组织、指挥和控制人的各种工作活动,实现组织目标。 通俗点说,微观管理属于某种意义上的"过程管理",与敏捷项目管理背道而驰,敏捷在某种程度上推荐"放权",即将微观管理交给团队自己,而仅仅下达宏观目标,模拟甲方的口气就是"我管你用...阅读全文
posted @ 2011-08-04 13:12 kkun 阅读(109) 评论(0) 编辑
摘要: /* SQL2008系统统计函数 */ SELECT @@CONNECTIONS SELECT @@CPU_BUSY SELECT @@IDLE SELECT @@IO_BUSY SELECT @@PACK_RECEIVED SELECT @@PACK_SENT SELECT @@TIMETICKS SELECT @@TOTAL_ERRORS SELECT @@TOTAL_READ SELECT...阅读全文
posted @ 2011-08-03 10:59 kkun 阅读(78) 评论(0) 编辑
摘要: /* 1,ASCII返回字符表达式中最左侧字符的ASCII代码值 仅返回首字母的ASCII码值 parameter char或varchar returns integer */ SELECT ASCII('a') --97 SELECT ASCII('A') --65 SELECT ASCII('aA') --97 SELECT ASCII('0') --48 SELECT ASCII('01...阅读全文
posted @ 2011-08-02 18:52 kkun 阅读(128) 评论(0) 编辑