您正在查看 "c#版数据结构" 分类下的文章
2008-07-22 16:30
public static void Hanoi(int n, string a, string b, string c)
{
if (n == 1)
{
//move the one dish of a to c
Consol |
2008-06-26 18:03
题目:
有1亿个数存在文件中,而内存相对较小,如何求前1000个最大的数。
思路:
1、读取文件中前1000个数放入其中,并排序(降序)放到单链表中,纪录单链表的头和尾
2、继续读取文件中的数,和尾指针的数比较,如果大,则插入到相应位置,并删除尾指针。
3、文件读完后,单链表就纪录了前1000大的数。
时间复杂度:O(n)
空间开销:O(1000)
代码:
//假设全为整数
public int readANumFromFile(){...}
public bool canRead(){...}
public void getTop1000() |
2008-06-26 17:22
public static void getMinPath_Dijkstra(List<Node<int>> blues, Node<int> root)
{
//init
List<Node<int>> reds = new List<Node<int>>();
reds.Add |
2008-03-26 17:27
我们常遇到这样的算法题目:
1、红黄蓝三种颜色的球分给ABC三个人,A拿的不是红色,B拿的不是黄色,C拿了蓝色。问每个人各自拿了什么颜色的球?
2、ABC三个人有不同的年龄和身高,A不是最高的但也不是最小的,B不是最年长的。问三人的年龄和身高顺序。
上面的题目在算法问题上,可以归为排列组合型问题。在数学问题上讲,应该属于散列数据问题。
比如第一题:
1、红黄蓝三种颜色的球分给ABC三个人,A拿的不是红色,B拿的不是黄色,C拿了蓝色。问每个人各自拿了什么颜色的球?
可以定义三个变量来代表 |
2008-03-17 14:11
public class Graph<T>
{
/// <summary>
/// 图包含接点
/// </summary>
public List<Node<T>> Nodes;
public Graph()
{
|
|
|