Algorithm
sukhoeing
这个作者很懒,什么都没留下…
展开
-
假设有一个rand(0,1)的0,1随机生成器,如何对于给定的(a,b),随机生成一个x, 其中 a <= x <= b
Describe an implementation of the procedure RANDOM(a, b) that only makes calls to RANDOM(0, 1). What is the expected running time of your procedure, as a function of a and b?这是算法导论中随机算法部分的一道题,看似很简单原创 2006-08-28 18:37:00 · 4187 阅读 · 4 评论 -
C++学习练手之- RadixSort
using namespace std; // 把32位整数看成8位的16进制整数void RadixSort(vector& v){ vector tempStor(v.size()); vector offset(0x10); vector count(0x10); // 按照16进制对32位整数进行排序,总共进行8趟 for (int digit =原创 2007-11-15 10:56:00 · 981 阅读 · 0 评论 -
在数组中寻找主要元素的算法及其正确性证明。
在数组中寻找主要元素的算法。这个是数据结构与算法分析-C语言描述一书的课后习题2.19的解答。长度为n的数组A的主要元素,指的是在所有元素中出现次数超过n/2次的元素。(所以最多有一个而已。)下面的算法是Google出来的答案(原来是伪代码,我用C#实现了),教材上给的提示实在是难于理解。// Let T [1..n] be an array of n integers. An i原创 2007-10-12 17:45:00 · 2342 阅读 · 2 评论 -
C++ 学习练手 - 双向链表的模板实现
#ifndef __LINKEDLISTPRACTICE__H__#define __LINKEDLISTPRACTICE__H__ 1namespace FengChen...{ // template for double link list template class Type> class LinkedList; template class T> st原创 2007-11-01 17:15:00 · 1192 阅读 · 0 评论 -
C++ 学习练手 - 数组型栈的模板实现
#ifndef __STACKPRACTICE_H__#define __STACKPRACTICE_H__ 1namespace FengChen...{ template class Type> class Stack; template class T> std::ostream& operator(std::ostream& os, const Stac原创 2007-11-01 17:07:00 · 982 阅读 · 0 评论 -
C++ 学习练手 - 数组型队列的模板实现
#ifndef __QUEUEPRACTICE_H__#define __QUEUEPRACTICE_H__ 1namespace FengChen...{ template class Type> class Queue; template class T> std::ostream& operator(std::ostream& os, const QueueT>&原创 2007-11-01 16:53:00 · 1292 阅读 · 0 评论 -
快速排序的C#实现以及,算法导论上之后一个习题的思考
//Divide: Partition (rearrange) the array A[p ‥ r] into two (possibly empty) subarrays A[p ‥ q - 1] // and A[q + 1 ‥ r] such that each element of A[p ‥ q - 1] is less than or equal to A[q], which i原创 2007-10-08 11:08:00 · 1020 阅读 · 0 评论 -
基于最小二叉堆的优先级队列-C#实现,以此为基础的K路合并排序算法
这两个程序实际上就是 算法导论6.5-3和6.5-8的C#实现。在Visual C# 2005下测试通过 <!--{/rtf1/ansi/ansicpg/lang1024/noproof936/uc1 /deff0{/fonttbl{/f0/fnil/fcharset0/fprq1 Consolas;}}{/colortbl;??/red0/green0/blue255;/red192/gr原创 2007-10-05 18:03:00 · 2150 阅读 · 0 评论 -
算法学习,单链表 C# 泛型实现
这个链表没有暴露node接口,而是把链表本身包装成了一个Collection和List,实现了ICollection, IEnumerable, IList接口,写的过程中参考了BCL中的实现以及Wintellect.PowerCollection的实现以及写法。并且初步通过测试。namespace FengChen.Practices{ internal class ListNod原创 2007-10-18 20:44:00 · 1859 阅读 · 5 评论 -
HeapSort的C#实现
把算法导论第六章的堆排序用C#实现了一下。 把MaxHeapify用迭代实现了。发现几个问题:第一呢,算法导论中假设内部数组是从1开始的,结果左右结点的算法和从0开始的数组实际上是不同的。第二呢,在改迭代的时候,粗心把循环变量写错了。结果调了很久,郁闷死。并且加入优先级队列的功能,包括Maximum, ExtractMax, IncreaseKey, Insert, Delete子过程下面是实现原创 2007-09-28 00:08:00 · 1380 阅读 · 0 评论 -
Merge Sort 并且返回逆序数的算法 - C#实现
针对算法导论第二章的 Problem 2-4的C#实现:public static Int32 MergeSort(Int32[] InputArray)...{ // Divide: Divide the n-element sequence to be sorted into two subsequences of n/2 elements each. Int32 Leng原创 2007-09-25 11:36:00 · 1277 阅读 · 0 评论 -
BinarySearch - C#实现
最近又重新开始学习算法,努力用C#把算法导论中的算法写一遍,并且调试通过,前段时间写的第一个算法就是BinarySearch, 同时还写了几个生成随机数组的函数,个人感觉用C#写算法的话,表达的比较清楚,毕竟算法主要讲究的是逻辑。不过这个算法我居然写了3个小时才通过各种各样的随机测试。狂汗啊!public static Int32 BinSearch(Int32[] InputArray,原创 2007-09-25 11:29:00 · 3429 阅读 · 0 评论 -
算法导论习题1.2的一些思考。
For each function f(n) and time t in the following table, determine the largest size n of a problem that can be solved in time t, assuming that the algorithm to solve the problem takes f(n)原创 2007-08-31 20:37:00 · 1069 阅读 · 1 评论 -
算法导论中间关于递归问题的master method的替代方法
算法导论中间递归一节中:关于T(n) = aT(n/b) + f(n), a >= 1, b > 1。此书的作者提出了一种解法(master method),分情况对于f(n),a,b三个参数对于最后解的影响做了解答。实际上,个人认为有更好基于代数技巧的的方法。但是并不难于掌握。 set n = b^k, S(k) = T(b^k), then we have: S(k) =原创 2006-05-18 10:08:00 · 2706 阅读 · 1 评论 -
一个双向链表的单指针实现
Save precious bytes with a new twist on a standard data type. In the quest to make small devices cost effective, manufacturers often need to think about reducing the memory size. One option is to转载 2007-11-27 15:11:00 · 2888 阅读 · 0 评论