数据结构和算法
文章平均质量分 69
大脸猫和笨笨
这个作者很懒,什么都没留下…
展开
-
选择排序、冒泡排序、插入排序
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace test1{ class CArray { private int[] arr; private int upper;原创 2014-11-10 16:12:13 · 306 阅读 · 0 评论 -
判断一个数是不是2的幂
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。最快速的方法:(number & number - 1) == 0原因:因为2的N次方换算是二进制为原创 2014-11-20 14:52:43 · 336 阅读 · 0 评论 -
单链表的逆置
如何把一个单链表进行反转?方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。方法2:使用三个指针遍历单链表,逐个链接点进行反转。方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。转载 2014-11-20 14:38:58 · 827 阅读 · 0 评论 -
字符串翻转的方法
老赵在反对北大青鸟的随笔中提到了数组反转。这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常)。因为我写着写着,就写出来8种方法……现在我们以字符串的反转为例,来介绍这几种方法并对它们的性能进行比较。使用Array.Reverse方法对于字符串反转,我们可以使用.NET类库自带的Array.Reverse方法public st转载 2014-11-20 14:04:37 · 383 阅读 · 0 评论 -
集合CSet的ArrayList实现
public class CSet { private Hashtable data; public CSet() { data = new Hashtable(); } public void Add(object item) {原创 2014-11-19 21:46:20 · 392 阅读 · 0 评论 -
二叉查找树的定义
public class Node { public int Data; public Node Left; public Node Right; public void DisplayNode() { Console.Write(Data + " ");原创 2014-11-19 20:20:48 · 408 阅读 · 0 评论 -
面向对象的链表设计
Node类: public class Node { public object Element; public Node Link; public Node() { Element = null; Link = null; }原创 2014-11-18 13:18:35 · 910 阅读 · 0 评论 -
队列Queue类 基数排序和优先队列
public class CQueue { private ArrayList pqueue; public CQueue() { pqueue = new ArrayList(); } public void EnQueue(object item) {原创 2014-11-12 10:51:15 · 423 阅读 · 0 评论 -
堆栈 Stack类
class CStack { private int p_index; private ArrayList list; public CStack() { list=new ArrayList(); p_index =-1; }原创 2014-11-12 09:58:41 · 319 阅读 · 0 评论 -
辗转法求最大公约数和最小公倍数
/// /// 求最大公约数 /// 辗转相除法 /// /// /// /// public static int getGreatestCommonMeasure(int num1, int num2) { i转载 2014-11-20 15:10:34 · 1077 阅读 · 0 评论