摘要: 一、排序1、应用a、一些程序需要有序的输出,二分查找之类的程序需要一个有序的输入。b、收集相同项:使用排序来收集序列中相同的项,后缀数组收集相同的单词。2、算法a、插入排序:O(n^2)的最坏时间,如果给一个大致有序的数组进行排序,则只需要O(n)时间,是稳定的。b、快速排序:最优时间O(nlogn),最坏情况O(n^2)时间O(n)空间c、堆排序:任何情况都是O(nlogn)时间d、其他:归并排序,选择排序,希尔排序e、基数排序f、位图排序:序列中的整数在一个范围内,没有重复的数,没有额外的数据。二、查找1、算法a、线性查找b、二分查找:有序数组c、哈希d、二叉查找树e、关键字索引:bins 阅读全文
posted @ 2012-05-05 13:03 Cavia 阅读(431) 评论(0) 推荐(0)
摘要: 首先是letter-level的马尔科夫链然后是word-level的马尔科夫链word-level 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 //输入的字符串 6 char inputchars[4300000]; 7 #define MAXWORDS 80000 8 //字符串中没一个单词 9 char *word[MAXWORDS]; 10 //单词个数 11 int nword=0; 12 //k-order 13 int k=2; 14 15 //has 阅读全文
posted @ 2012-05-05 10:20 Cavia 阅读(588) 评论(0) 推荐(0)