启发算法有: 蚁群算法,遗传算法、模拟退火算法等 蚁群算法是一种来自大自然的随机搜索寻优方法,是生物界的群体启发式行为,现己陆续应用到组合优化、人工智能、通讯等多个领域。蚁群算法的正反馈性和协同性使其可用于分布式系统,隐含的并行性更使之具有极强的发展潜力。从数值仿真结果来看,它比目前风行一时的遗传算法、模拟退火算法等有更好的适应性。
成都创新互联是一家集网站建设,裕民企业网站建设,裕民品牌网站建设,网站定制,裕民网站建设报价,网络营销,网络优化,裕民网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
你是搜文件名,还是搜文件内容?要是搜文件内容可就麻烦了,有可能的话你看看Java的一个开源库Lucene。
要是简单的搜文件名包含的字符串,大致应该涉及到文件树的遍历算法,最多用一些简单的正则表达式来匹配文件名,一般用递归可以实现任意级目录树的搜索。
给你个简单的版本吧:
package test.tool;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FindFile {
private String fileName = "";
private String dir = "";
private Matcher m = null;
private int count = 0;
public FindFile() throws IOException {
String f = FindFile.class.getResource("findfile.properties").getFile();
BufferedReader read = new BufferedReader(new FileReader(f));
dir = read.readLine().trim();
fileName = read.readLine().trim();
Pattern p = Pattern.compile(fileName);
m = p.matcher("");
}
public void find() {
File root = new File(dir);
for (File f : root.listFiles()) {
if (f.isDirectory()) {
dir = f.getAbsolutePath();
find();
} else {
m.reset(f.getName());
if (m.find()) {
count++;
System.out.println(f.getAbsolutePath());
}
}
}
}
public static void main(String[] args) {
try {
FindFile ff = new FindFile();
ff.find();
System.out.println("\n共找到文件数目:" + ff.count);
} catch (IOException e) {
e.printStackTrace();
}
}
}
里面用到的findfile.properties,举个例子:
F:\download
vod.*.exe
运行效果如下:
F:\download\firefox\vodplayer.exe
F:\download\ie\vodplayer.exe
共找到文件数目:2
这个。。。我随便乱说几句啊,说的不对别见笑。
有一个数组 当中存有一些字符串
另外有一个字典文件 我也将它导入一个数组 有50000多个单词
然后要找出字符串中包含的单词
由你给的条件可知:
1。数组 应该是从前到后依次顺序扫描字符串。
2。50000多个单词的字典文件一定优化。具体优化要看具体内容吧。
比如你可以按单词的首字母排序,然后分组。等扫描字符串的时候可以分组比较。但这种方法应该没省多少时间。
你还可以把50000多个单词的字典文件按单词的长度进行分组。比如1个字母的分成一组,二个字母的分成一组。。。。N个字母的分成一组,这样就分成了N组。然后扫描字符串的时候你可以按后续匹配(好象叫这个算法吧,名字记不清了)算法,这样就可以省很多时间了。
你还可以这样做,因为你要查的是单词,单词一定有意义。那你可以直接把你的字符串数组先进行语法、语义分析并分割,然后再去匹配你的字典。这样应该是最快的。但这要用到自然语言处理。。。
应该要用递归方法吧? binarySearch()方法应该要带四个参数(数组,要查找的数值,查找范围的最左边下标,查找范围的最右边下标)。然后就利用递归方法在 if (x a[middle]) 和 else 后面通过修改查找范围自调用binarySearch()方法;
数组从第一个开始比较,完全相同(当前数组值和输入值一模一样)A就赋值为true;不一样A的值不变
BufferedImage image;
int w = image.getWidth();
int h = image.getHeight();
int color;
for (int i = 0; i w; i++) {
for (int j = 0; j h; j++) {
color = image.getRGB(i, j);
}
}
不知道你到底要做什么,这个只是帮你拿到图上的点的颜色。那些提取特征点的算法就是相当复杂了,比如透过值,颜色分布值,对比度,亮度,甚至要多做因素综合考虑起来,难度不小的。java做图形是越来越少了,qq282052309