快速排序Java代码实现

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

快速排序Java代码实现_第1张图片
相信大家 都有所理解了,具体代码如下

public static void quickSort(int[] arr, int low, int high) {
		// low,high 为每次处理数组时的首、尾元素索引

		// 当low==high是表示该序列只有一个元素,不必排序了
		if (low >= high) {
			return;
		}
		// 选出哨兵元素和基准元素。这里左边的哨兵元素也是基准元素
		int i = low, j = high, base = arr[low];
		while (i < j) {
			// 右边哨兵从后向前找
			while (arr[j] >= base && i < j) {
				j--;
			}
			// 左边哨兵从前向后找
			while (arr[i] <= base && i < j) {
				i++;
			}
			swap(arr, i, j); // 交换元素
		}
		swap(arr, low, j); // 基准元素与右哨兵交换

		// 递归调用,排序左子集合和右子集合
		quickSort(arr, low, j - 1);
		quickSort(arr, j + 1, high);

	}

	private static void swap(int[] arr, int i, int j) {
		int tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;
	}

你可能感兴趣的:(算法,数据结构)