bwt比对算法 C语言,BWT以及BWTS算法的一点总结及看法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
layndown=(char **)malloc(sizeof(char*)*(lenth));
//line为读取的待处理数组,out为最终的处理结果
//数组a为记录主体处理部分while循环生成的每个layndown数组的元素个数
//动态数组b为layndown处理过程中的待判断动态字符快(是否为layndown)。layndown则为所记录的最长的layndown字符快
//
whilenum=0;cmp=0;c=1;reservei=0;
linenum=0;
//该while与for的嵌套动态循环完成了最长layndown模块的寻找
//实际上就是while完成待处理字符的逐个移动,linenum则是该移动的指针,for循环则是从该字符开始向后遍历,判断是否linenum与i之间
//的字符快是否为layndown word,并记录下最长的长度。在下一次while循环中则不需要再在layndown word中间移动了,直接从最长的layndown word
//后面开始
while(linenum
for(int i=linenum;i
free(b);
b=(char **)malloc(sizeof(char*)*(i+1-linenum));//申请二维动态数组,因为要对待处理快进行循环移位,拓展成二维,以进行layndown的判断
for(int j=0;j
b[j]=(char *)malloc(sizeof(char)*(i+1-linenum));
}
copy1(b[0],line,linenum,i+1); //将待处理的块拷贝入b数组中准备处理
movechar(b[0],i+1-linenum,b); //拓展成为二维
cmp=0;
c=0;
while(cmp==0&&c
if(strncmp(b[0],b[c],i+1-linenum)>0){
cmp=1;
}
c++;
}
if(cmp==0) //仅仅记录下layndown word的长度,因为他是不断覆盖的,最终记录的就是最长的。。。
reservei=i;
}
//接下来的一小段代码则是完成将每次for循环中生成的最长layndown word读取出来,储存在layndown word中,数组a中则是其长度的储存
//其中whilenum是while循环次数的记录
r=(char *)malloc(sizeof(char)*(reservei+1-linenum));
copy1(r,b[0],0,reservei+1-linenum);
a[whilenum]=reservei+1-linenum;
layndown[whilenum]=(char *)malloc(sizeof(char)*(reservei+1-linenum));
copy1(layndown[whilenum],r,0,reservei+1-linenum);
whilenum++;
linenum=reservei+1;
free(r);
}
free(b);
//下面则是对生成的layndown word分别进行循环移位的拓展,并将其进一步拓展为lenth*lenth的二维数组,并进行排序,生成输出。
int sum=0;
char end[lenth][lenth]; //输出之前的二维数组都将保存在end中
//int resa[lenth]; //记录下end中每一行的实际长度(拓展为lenth*lenth的二维数组之前的长度)
for(int cend=0;cend
for(int cend1=0;cend1
end[cend][cend1]=0;
}
}
for(int endnum=0;endnum
rr=(char **)malloc(sizeof(char*)*(a[endnum]));
for(int rrn=0;rrn
rr[rrn]=(char *)malloc(sizeof(char)*(a[endnum]));
}
movechar(layndown[endnum],a[endnum],rr); //每一个layndown word的循环移位
//free(layndown);
int rri=0;
//对应的长度记录也要拓展
for(int toend=sum;toend
copy1(end[toend],rr[rri],0,a[endnum]);
resa[toend]=a[endnum];
rri++;
}
sum=sum+a[endnum];
free(rr);
}
free(layndown);
//倒数第二步的lenth*lenth的拓展
for(int stend=0;stend
int mv=resa[stend];
int add=0;
for(;mv
end[stend][mv]=end[stend][add];
add++;
}
}
qsort(end,resa,0,lenth-1); //排序
comout(end,out,lenth); //生成输出数组
//putline(out,lenth);
long pos_file = ftell(read);//ftell函数返回stream流的当前文件位置
fseek(read,pos_file - lenth, SEEK_SET);//重新设置流stream的文件位置,将位置设置在需要写入数据的地方
fwrite(out,sizeof(char),lenth,read);
pos_file = ftell(read);
fseek(read,pos_file,SEEK_SET);//重新设置位置,使得fgets函数从正确位置开始读
}
fclose(read);
printf("算法结束\n");
end=clock();
cout<
return 0;
}
bwt比对算法 C语言,BWT以及BWTS算法的一点总结及看法相关推荐
- bwt比对算法 C语言,DNA比对算法:BWT
DNA比对算法:BWT BWT算法,实质上是前缀树的一种实现.那么什么是前缀树呢? 一.前缀树 对于问题p in S?如果S=rpq,那么p为S前缀rp的一个后缀. 于是,为了判断p in S 是否成 ...
- 最近最久未使用页面置换算法C语言,LRU页面置换算法模拟-最近最久未使用置换算法...
LRU页面置换算法模拟-最近最久未使用置换算法 LRU页面置换算法模拟-最近最久未使用置换算法|课程设计|计算机数据库课程设计 一.设计目的 1.用C语言实现最近最久未使用(LRU)置换算法. 2.了 ...
- java实现随机数生成算法_Java 语言实现的随机数生成算法
广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软件年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士电话或者QQ咨询. [导 ...
- 妙趣横生的算法(c语言实现),妙趣横生的算法(C++语言实现) 带目录完整pdf[4MB]
<妙趣横生的算法(C++语言实现)>内容丰富,生动有趣,寓教于乐,旨在帮助读者学习数据结构和算法的相关知识,从而开阔眼界,培养编程兴趣,提高编程能力,增强求职的竞争力.如果您想提高自己对算 ...
- c语言程序设计 算法,C语言程序设计第二章算法
<C语言程序设计第二章算法>由会员分享,可在线阅读,更多相关<C语言程序设计第二章算法(38页珍藏版)>请在人人文库网上搜索. 1.C程序设计,主讲人:袁丽,燕大里仁基础教学部 ...
- 短进程算法c语言,短进程优先算法C语言实现
短进程优先算法C语言实现 1.本实验实现了短进程优先的进程调度操作,但因为是非抢占式,所以实现起来比较简单. 短进程优先算法是以作业的长短来计算优先级,作业越短,其优先级越高.作业的长短是以作业所要求 ...
- 用c语言编写插入排序算法,C语言实现常用排序算法——插入排序
插入排序是最基础的排序算法,原理: 首先1个元素肯定是有序的,所以插入排序从第二个元素开始遍历: 内循环首先请求一个空间保存待插入元素,从当前元素向数组起始位置反向遍历: 当发现有大于待插入元素的元素 ...
- 数据拟合算法c语言实现,数据拟合算法剖析及C语言实现.doc
数据拟合算法剖析及C语言实现 数据拟合算法剖析及C语言实现 [摘要]数据拟合在很多地方都有应用,主要用来处理实验或观测的原始离散数据.通过拟合可以更好的分析和解释数据.在引用前人的算法基础上,采用正交 ...
- 人工免疫算法c语言程序,基于人工免疫算法的模拟电路故障诊断
摘要: 模拟电路故障诊断一直以来都是十分必要和有意义的,目前已成为热门的研究课题.现代电子技术和计算机技术的迅速发展促进了片上系统和混合集成电路的大量涌现,这也对模拟电路的测试和故障诊断提出了更高的要 ...
- JAVA梅森旋转随机算法,C语言实现梅森旋转算法
原理: 梅森旋转算法是一种伪随机数生成算法 1.定义相关宏和结构体 #include #include #include #include typedef unsigned int uint; #de ...
最新文章
- Java程序员从笨鸟到菜鸟之(八十七)跟我学jquery(三)jquery动态创建元素和常用函数示例
- Steps to configure Oracle 11g Data Guard Physical Standby – Active Data Guard Part-I
- 【Node】node启动过程
- java Socket(二)
- 「软件项目管理」一文详解软件项目管理概述
- java程序员学习路线以及我的学习经验
- Linux Shell脚本入门教程系列之(八)Shell printf命令详解
- mysql使用裸设备_请教dd清空裸设备问题
- Java正则速成秘籍(一)之招式篇
- 主席树 POJ2104
- 【特征提取】基于matlab熵函数语音端点检测【含Matlab源码 1764期】
- 品达物流项目重点技术 微服务高性能实战
- 快速云:云服务器四种部署模式之私有云
- 有关凸集的证明例题_凸集/凸函数习题
- 团队任务1:第一次团队会议
- torch.sort()用法
- 应对羊毛党的老手段不管用了,但有些公司依然有办法,他们是怎么做的?
- java在屏幕上打印出乘法口诀,Java打印乘法口诀
- php免费教学视频大全
- mysql bulkupdate_django_bulk_update源码分析
热门文章
- 腾讯安全发布《2021年全球DDoS威胁报告》:DDoS威胁成犯罪团伙首选勒索手段
- oracle 硬解析过高,过度硬解析导致share pool latch争用
- Ambari-2.7.4和HDP-3.1.4安装(附Ambari和HDP安装包)
- Directx11进阶之ScreenSpaceReflection(SSR)屏幕空间反射(1)
- 再下一城,万元奖金!玻色量子荣获“创客北京”二等奖
- jmeter调用接口,往数据库录入数据乱码问题
- 【uniapp基础篇】实现微信登录
- 微信小程序案例:拼团模块
- 单片机原理与应用设计第一章
- 二叉树层序遍历(c语言,非递归)