java排序算法-交换排序

public class ExchangeSortUtils {

	// 冒泡
	public static void bubbleSort(int[] array) {
		int length = array.length;
		int temp;
		boolean isSort;
		for (int i = 1; i < length; i++) {
			isSort = false;
			for (int j = 0; j < length - i; j++) {
				if (array[j] > array[j + 1]) {
					// 交换
					temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
					isSort = true;
				}
			}
			if (!isSort)
				break; // 如果没有发生交换,则退出循环
		}
	}

	public static int getMiddle(int[] arr, int low, int high) {
		if (low < high) {
			int tmp = arr[low]; // 数组的第一个作为中轴
			while (low < high && arr[high] > tmp) {
				high--;
			}
			arr[low] = arr[high]; // 比中轴小的记录移到低端
			while (low < high && arr[low] < tmp) {
				low++;
			}
			arr[high] = arr[low]; // 比中轴大的记录移到高端
			arr[low] = tmp; // 中轴记录到尾
		}
		return low; // 返回中轴的位置
	}
	
	public static int getMiddle2(int[] arr, int low, int high) {
		int tmp = arr[low]; // 数组的第一个作为中轴
		while (low < high) {
			while (low < high && arr[high] > tmp) {
				high--;
			}
			arr[low] = arr[high]; // 比中轴小的记录移到低端
			while (low < high && arr[low] < tmp) {
				low++;
			}
			arr[high] = arr[low]; // 比中轴大的记录移到高端
		}
		arr[low] = tmp; // 中轴记录到尾
		return low; // 返回中轴的位置
	}

	//快速排序
	public static void quickSort(int[] arr, int low, int high) {
		if (low < high) {
			int middle = getMiddle(arr, low, high); // 将arr数组进行一分为二
			quickSort(arr, low, middle - 1); // 对低字表进行递归排序
			quickSort(arr, middle + 1, high); // 对高字表进行递归排序
		}
	}

	public static void main(String[] args) {
		quickSortTest();
		bubbleSortTest();
	}

	private static void quickSortTest() {
		int[] sortArray = { 5, 2, 4, 1, 3 };
		System.out.print("快速排序前: ");
		Utils.printArray(sortArray);
		quickSort(sortArray, 0, sortArray.length - 1);
		System.out.print("快速排序后: ");
		Utils.printArray(sortArray);
	}

	private static void bubbleSortTest() {
		int[] sortArray = { 5, 2, 4, 1, 3 };
		System.out.print("冒泡排序前: ");
		Utils.printArray(sortArray);

		bubbleSort(sortArray);
		System.out.print("冒泡排序后: ");
		Utils.printArray(sortArray);
	}
}

  

posted on 2014-03-11 20:58  zhaofeng555  阅读(300)  评论(0)    收藏  举报