随笔分类 -  算法

算法思想以及自己编写的算法代码
摘要:这个问题不难,主要有两种方式实现。1):用“加减”运算实现 int a = 100; int b = 200; a = a + b; //300 b = a - b; //100 a = a - b; //2002):用“异或”运算实现 int a = 1; int b = 10; a = a ^ b; //0001 ^ 1010 = 1011 (11) b = a ^ b; //1011... 阅读全文
posted @ 2013-06-03 12:30 Eric Sun 阅读(842) 评论(0) 推荐(0) 编辑
摘要:................using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MaxSUM{ class Program { static void Main(string[] args) { //初始化目标数组 int[] myArray = new int[] { 13, -41, 42, 26, -33, 59, 97, -90, -23, 84 }; ... 阅读全文
posted @ 2011-12-13 08:19 Eric Sun 阅读(1821) 评论(1) 推荐(0) 编辑
摘要:微软的一道面试算法题:将数组中指定的前N位移动到数组的最后面。 传入一个数组如 {1,2,3,4,5,6,7} 将数组前面 head的一个子集移到数组末尾end 如input numberOfElements=3,则{1,2,3,4,5,6,7}=>{4,5,6,7,1,2,3} input numberOfElements=5,则{1,2,3,4,5,6,7}=>{6,7,1,2,3,4,5} 如何写出该算法? 阅读全文
posted @ 2011-11-09 16:27 Eric Sun 阅读(5218) 评论(0) 推荐(1) 编辑
摘要:已知一个整数N,求另外一个整数M,使得M本身 + M各个位上的数 = N;这是一道简单的算法题,主要就是用了取整(/)和求余(%)这两个基本运算。 阅读全文
posted @ 2011-10-14 15:26 Eric Sun 阅读(601) 评论(0) 推荐(0) 编辑
摘要:用小白鼠鉴别有毒药水问题,这是一个二进制开关(0/1)问题,类比于海明码校验算法。 阅读全文
posted @ 2011-10-14 10:25 Eric Sun 阅读(5804) 评论(1) 推荐(2) 编辑
摘要:小顶堆实现从具有N个元素的无序数组中获取最小的M个元素 阅读全文
posted @ 2011-09-20 14:20 Eric Sun 阅读(2852) 评论(0) 推荐(0) 编辑
摘要:在软件设计相关领域,“堆(Heap)”的概念主要涉及到两个方面:一种是数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。另一种是垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆指的是前者,另外,这篇文章中堆中元素的值均以整形为例堆排序的时间复杂度是O(nlog2n),与快速排序达到相同的时间复杂度. 但是在实际应用中,我们往往采用快速排序而不是堆排序. 这是因为快速排序的一个好的实现,往往比堆排序具有更好的表现. 堆排序的主要用途,是在形成和处理优先级队列方面. 另外, 如果计算要求是类优先级队列(比如, 只要返回最大或者最小元素, 只有有限的插入要求等), 堆同样是 阅读全文
posted @ 2011-09-13 23:50 Eric Sun 阅读(10510) 评论(9) 推荐(3) 编辑
摘要:插入排序算法主要分为:直接插入算法,折半排序算法(二分插入算法),希尔排序算法,后两种是直接插入算法的改良。因此直接插入算法是基础,这里先进行直接插入算法的分析与编码。直接插入算法的排序思想:假设有序数组从小到大为array[0],array[1],array[2],....,array[n-2],array[n-1],那么将待排数值array[n]与前面的有序数组从后向前依次比较,直到在有序数组中找到小于待排数值array[n]的位置,将array[n]插入到此位置,并入组合成新的有序数组。直接插入算法--代码如下所示: //直接插入排序算法(传递待排数组名,即:数组的地址。故形参数... 阅读全文
posted @ 2011-08-24 11:26 Eric Sun 阅读(3869) 评论(9) 推荐(5) 编辑
摘要:自顶向下的归并排序:是利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列,归并排序包括两个步骤,分别为:1)划分子表 2)合并半子表 阅读全文
posted @ 2011-08-18 19:17 Eric Sun 阅读(10301) 评论(17) 推荐(7) 编辑
摘要:简单的冒泡排序算法,代码如下://冒泡排序(从数组的起始位置开始遍历,以大数为基准:大的数向下沉一位)privatestaticvoid BubbleSortFunction(int[] array) { try { int length = array.Length; int temp; bool hasExchangeAction; //记录此次大循环中相邻的两个数是否发生过互换(如果没有互换,则数组已经是有序的) ... 阅读全文
posted @ 2011-08-17 16:02 Eric Sun 阅读(7647) 评论(0) 推荐(0) 编辑
摘要:快速排序算法(C#实现):确定关键值的位置,以此递归的将数组划分为左右两个区间,每次划分后关键值都游离左右区间之外。 阅读全文
posted @ 2011-08-17 14:10 Eric Sun 阅读(29017) 评论(17) 推荐(9) 编辑
摘要:大数据相乘:下面是我写的一个关于大数据相乘的算法,核心思想就是通过小学竖式乘法进行运算 阅读全文
posted @ 2011-08-13 08:38 Eric Sun 阅读(1071) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示