分治法总结

1、分治法之快排:

static int[] array = { 1, 3, 56, 33, 765, 43, 7, 65, 56345, 76, 3453, 6465 };

	public static void quickSort(int[] array, int begin, int end) {
		int middle = selectIndex(array, begin, end);
		if (begin < middle - 1) {
			quickSort(array, begin, middle - 1);
		}
		if (middle < end - 1) {
			quickSort(array, middle + 1, end);
		}

	}

	public static int selectIndex(int[] array, int start, int stop) {

		int middle = (start + stop) / 2;
		while (start < stop) {
			while (start < stop && array[start] < array[middle]) {
				start++;
			}
			if (array[start] >= array[middle]) {
				int temp = array[start];
				array[start] = array[middle];
				array[middle] = temp;
				middle = start;
			}
			while (start < stop && array[middle] < array[stop]) {
				stop--;
			}
			if (array[middle] >= array[stop]) {
				int temp = array[middle];
				array[middle] = array[stop];
				array[stop] = temp;
				middle = stop;

			}
		}
		return middle;
	}

具体的演示: http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/kuaisupaixu.htm


分治法之归并排序:



分治法之汉诺塔问题(双层汉诺塔、三层汉诺塔):


大数据相乘


二分查找




你可能感兴趣的:(分治法总结)