代码改变世界

随笔档案-2011年08月

求子数组的最大和

2011-08-28 11:30 by DylanChan, 454 阅读, 收藏,
摘要: 怀念对算法的酷爱,决定搜集网上的算法题目,并持之以恒练习之 /* 题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为3, 0, -1, 5, -7, 9, -6, 4, -8, 10,和最大的子数组为10, 因此输出为该子数组的和10。 * 思路: 遍历数组,逐个相加,若和小于0,遍历从下一索引开始,并记下此时的索引(min... 阅读全文

查找数组中两个数,它们的和与数组中某个数字相等

2011-08-27 22:52 by DylanChan, 200 阅读, 收藏,
摘要: 怀念对算法的酷爱,决定搜集网上的算法题目,并持之以恒练习之 /* 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。 如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1,5,4,7,18,25,37,44 和数字25。由于7+18=25,因此输出7 和18。 */ class Program { static void Main(string[] args) { ... 阅读全文

排序算法

2011-08-27 09:46 by DylanChan, 233 阅读, 收藏,
摘要: /// /// 冒泡排序 /// public void BubbleSort(int[] sortItems) { for (int i = 0; i = i; j--) { if (sortItems[j + 1] /// /// 冒泡排序(优化版) /// public void BubbleSortImproved(int[] sortItems) { int i, j, temp; bool flag = true; ... 阅读全文

C# 值类型和引用类型

2011-08-16 23:31 by DylanChan, 283 阅读, 收藏,
摘要: 我们都知道,c#的两大数据类型分别为值类型和引用类型。很多人或许闭着眼睛都能说出值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等,但是当被问及到二者之间的联系和区别,什么时候用struct什么时候用class时,就常常混淆不清了。为此,了解值类型和引用类型的本质差异就变的很有必要了。 ◆值类型直接存储其值,变量本身就包含了其实例数据,而引用类型保存的只是实例数据的内存引用。因此,一个值类型变量就永远不会影响到其他的值类型变量,而两个引用类型变量则很有可能指向同一地址,从而发生相互影响。◆从内存分配上来看,值类型通常分配在线程的堆栈(Sack)上,作用域结束时, 阅读全文

C# 方法参数传递之值传递和引用传递

2011-08-15 17:34 by DylanChan, 748 阅读, 收藏,
摘要: 1、大部分情况下,使用C#预定义的类型时,都是按照值传递使用的,比较复杂的情况是按照引用传递各种类型(值类型和引用类型),其实实质上的不同时对变量的操作方式上的不同2、在c#内置基本类型当中,除了object和string外,都是值类型。同时,自己定义的类,也都是引用类型。因为自定义类全部继承自System.Object3、在 C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员(方法、属性、索引器、运算符和构造函数)更改参数的值,并保持该更改。若要通过引用传递参数,请使用ref或out关键字。out与ref类似,唯一的不同是ref修饰变量时,变量需要初始化,而out修饰 阅读全文

线性表 - 双链表

2011-08-13 16:26 by DylanChan, 243 阅读, 收藏,
摘要: 线性表 - 单链表、线性表 - 顺序存储结构双向链表(double linked list):在单链表的每个结点中,再设置一个指向其前驱结点的指针域view sourceprint?01/// <summary>02/// 定义双向链表结点类03/// </summary>04public sealed class DoubleLinkedListNode<t>05{06//存放数据07private T tData;08//后继结点09private DoubleLinkedListNode<t> nNext;10//前继结点11private 阅读全文

线性表 - 单链表

2011-08-12 23:57 by DylanChan, 351 阅读, 收藏,
摘要: 线性表 - 顺序存储结构、线性表 - 双链表线性表顺序存储结构缺点:插入和删除时需要移动大量元素,耗费时间线性表链式存储结构: ◆ 用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的 ◆ 链表结构中,除了要存数据元素信息外,还要存储它的后继元素的存储地址线性表链式存储结构描述带头结点的单链表 空链表 实现代码 view sourceprint?01/// <summary>02/// 定义单链表结点类03/// </summary>04public sealed class SinglyLinkedListNode<t>05 阅读全文

线性表 - 顺序存储结构

2011-08-12 21:25 by DylanChan, 621 阅读, 收藏,
摘要: 线性表(概念):零个或多个具有相同类型的数据元素的有限序列线性表 - 单链表、线性表 - 双链表线性表的顺序存储结构:指的是用一段地址连续的存储单元依次存储线性表的数据元素。通俗描述:在内存找了块地儿,把一定的内存空间给占了,然后把相同数据类型的数据元素依次存放在这块空地中。描述顺序存储结构需要三个属性: ◆ 存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置 ◆ 线性表的最大存储容量:数组长度MaxSize ◆ 线性表的当前长度:length数组长度:存放线性表存储空间的长度,存储分配后这个量一般是不变的。线性表长度:线性表中数据元素的个数,随着线性表插入和删除操作进行的, 阅读全文

关于string.Join()

2011-08-09 20:22 by DylanChan, 305 阅读, 收藏,
摘要: String.Join(): 在指定 String 数组的每个元素之间串联指定的分隔符 String,从而产生单个串联的字符串。想得到"随笔,文章,新闻"这样的结果view sourceprint?01//方法一02List<user> user = new UserService().GetUserInfo();03StringBuilder sb = new StringBuilder();04int i = 1;05foreach (var u in user)06{07sb.Append(u.UserName);08if (user.Count != i 阅读全文