随笔分类 -  [09] 算法

摘要:1、对于一组连续的数据,打乱次序后,随机取出某一个数字(取出数字后,该位置后的所有数字位置前进一位),用最简单的方法查找出取出的数字。2、对1的扩展,当取出多个数据后,用最简单的方法查找出取出的数字。本人开始对于1的情况,将这种场景抽象成通用的模型,跳进了思维陷阱,把2倒是想出来了,晕了....大家也可以先试着写写,以下的代码并不是最好的(纯粹的测试代码),只作为参考而已。对于1的代码如下: public static int? FindDeletedOneElement(int totalLength, int firstValue, int exchangeCount) ... 阅读全文
posted @ 2013-07-17 23:58 jasen.kin 阅读(3216) 评论(6) 推荐(1) 编辑
摘要:一、前言在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。每一运算符都置于其运算对象之后,称为后缀表达式,后缀表达式又叫做逆波兰表达式。它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。二、一般算法将一个普通的中序表达式转换为逆波兰表达式的一般算法是:(1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。(2)读入一个用中缀表示的简单算术表达式,为方便起见,设该 阅读全文
posted @ 2013-07-14 21:26 jasen.kin 阅读(4275) 评论(4) 推荐(4) 编辑
摘要:最近一年多来,一直比较忙,最近一段时间终于空闲了,把以前没写的都补上.....这边随笔主要是计算一系列数据的间隔数据。从一堆数据中查询出每个区间的起始数据,结束数据以及数据个数,同时可以设置相应精度(小数位数)。区间数据数据结构1、区间数据主要包括当前区间的起始数据,结束数据以及数据个数。结构如下: public struct IntervalData { private TKey _startValue; private TKey _endValue; private TValue _count; public Interv... 阅读全文
posted @ 2013-07-13 12:13 jasen.kin 阅读(8547) 评论(2) 推荐(3) 编辑
摘要:样本方差与样本标准差1、定义:样本中各数据与样本平均数的差的平方和的平均数叫做样本方差;样本方差的算术平方根叫做样本标准差。 注:样本方差和样本标准差都是衡量一个样本波动大小的量,样本方差或样本标准差越大,样本数据的波动就越大。标准差与标准方差1、定义:方差是各个数据与平均数之差的平方和的平均数。在概率论和数理统计中,方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。标准差在概率统计中最常使用作为统计分布程度上的测量。标准差定义为方差的算术平方根,反映组内个体间的离散程度。加权平均1、定义:加权平均数(weighted average)是不同比重数据的平均数,就是把原始数据按照合理的比 阅读全文
posted @ 2013-07-13 00:10 jasen.kin 阅读(11059) 评论(0) 推荐(1) 编辑
摘要:中位数(Median)1、定义:一组数据按从小到大(或从大到小)的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数,注意:和众数不同,中位数不一定在这组数据中)。 注:当个数为基数时,取最中间位置的数;当个数为偶数时,取最中间两个数的平均数。2、从小到大排序,可以先用冒泡排序,然后取中位数,那么先看下冒泡排序算法,代码如下: public static void BubbleSort(this IList array) { if (array == null || array.Count == 0) { ... 阅读全文
posted @ 2013-07-12 23:36 jasen.kin 阅读(22072) 评论(0) 推荐(4) 编辑
摘要:一、前言类似如下字符串"ID", "NameValue", "CodeValue", "ExchangeTypeValue", 6, "invalid""ID2", "NameValue2", "CodeValue2", "ExchangeTypeValue2", 6, "invalid".......有可能是文件中存在的,或者调用其他程序返回的结构化数据,那么该如何解析?当其他场景中,只是返回顺 阅读全文
posted @ 2013-06-28 22:45 jasen.kin 阅读(6346) 评论(0) 推荐(0) 编辑
摘要:一、前言 本文主要介绍C# GDI+如何绘制矩行的圆角,其中涉及到如何使用位操作来处理组合的技巧。GDI+的本质在于,它能够替代开发人员实现与显示器及其它外部设备的交互。对于控件美化而言,需要达到自己期望的效果,GDI+必不可少。绘制后的圆角效果图如下:二、圆角枚举与相应组合处理设计对于矩行而言,圆角分为左上角、右上角、左下角和右下角。组合情况就分为无圆角、一个圆角、二个圆角、三个圆角以及四个圆角。枚举需要满足该组合情况,没必要在枚举中将 全部组合列出,只需要通过位操作就能计算出属于哪种组合。枚举类设计如下:1[Flags]2publicenumRoundStyle3{4None=0,5Top 阅读全文
posted @ 2012-08-26 22:12 jasen.kin 阅读(19001) 评论(16) 推荐(6) 编辑
摘要:前段时间看了《【面试】——反应迟钝的递归》中的三个递归算法,斐波那契数列优化后的算法思路确实不错,但是后面2个数列用递归的话,个人感觉有点得不偿失。能不用递归的话,尽量不用,因为有些算法完全可以用数学来解决。因此,本文中将这三个数列的最终算法总结如下。1、计算数组1,1,2,3,5,8,13...第30位的值递归算法如下:publicstaticintCalculateFibonacciSequence(intindex){if(index<=0){return0;}if(index==1||index==2){return1;}returnCalculateFibonacciSeque 阅读全文
posted @ 2012-02-22 01:02 jasen.kin 阅读(6365) 评论(23) 推荐(14) 编辑