需求:查找数组中某个元素的下标
实现方法:二分法查找(折半查找,每次把表分成两半,因为已经排好序,所以每次只需要和中间的数比较,就能确定要查找的值在哪一半,然后不断分成两半,直到匹配,如果没有找到,则表示没有该元素)
public static int find(int x) {
int[] intsz = new int[] { 10, 22, 36, 47, 58, 69, 79, 83 };
int min = 0;
int max = intsz.length - 1;
while (min <= max) {
int y = (min + max) / 2;
int value = intsz[y];
if (x > value) {
min = y + 1;
} else if (x < value) {
max = y - 1;
} else {
return y;
}
}
return -1;
}
public static void main(String args[]) {
System.out.println("元素下标为:"+find(79));
}
需求:一个目录下有文件、文件夹,文件夹下又有子目录,统计该目录中所有的文件目录
实现方法:递归(程序调用自身的编程技巧称为递归)
public static void main(String args[]) {
System.out.println(digui("D:\\test"));
}
static int x = 0;
static int y = 0;
public static int digui(String path) {
File file = new File(path);
if (!file.isDirectory()) {
System.out.println("不是目录");
} else if (file.isDirectory()) {
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File delfile = new File(path + "\\" + filelist[i]);
if (delfile.isDirectory()) {
x++;
System.out.println(path + "\\" + filelist[i]);
digui(path + "\\" + filelist[i]);
}else if(!delfile.isDirectory()){
y++;
System.out.println(path + "\\" + filelist[i]);
}
}
}
return y;
}