二分法查找、递归

需求:查找数组中某个元素的下标

 

实现方法:二分法查找(折半查找,每次把表分成两半,因为已经排好序,所以每次只需要和中间的数比较,就能确定要查找的值在哪一半,然后不断分成两半,直到匹配,如果没有找到,则表示没有该元素)

 

 

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;
	}

你可能感兴趣的:(二分法)