1. 程式人生 > >Java實現快速排序(分治法)

Java實現快速排序(分治法)

<span style="font-size:18px;">package com.alibaba;

public class QuickSortTest
{
	public static void quickSort(int[] arrays, int p, int r)
	{
		if (p < r)
		{
			int q = partition(arrays, p, r);
			quickSort(arrays, p, q - 1);
			quickSort(arrays, q + 1, r);
		}
	}

	public static int partition(int[] arrays, int p, int r)
	{
		int key = arrays[r];
		int i = p - 1;

		for (int j = p; j < r; j++)
		{
			if (arrays[j] <= key)
			{
				i++;
				int tmp = arrays[j];
				arrays[j] = arrays[i];
				arrays[i] = tmp;
			}
		}
		int tmp = arrays[i + 1];
		arrays[i + 1] = arrays[r];
		arrays[r] = tmp;
		return i + 1;
	}

	public static void main(String[] args)
	{
		int[] arrays = { 1, 7, 23, 14, 16, 3, 6, 9, 12, 21, 13, 15, 8, 9, 23, 14, 11, 25, 15 };
		quickSort(arrays, 0, arrays.length - 1);
		for (int num : arrays)
		{
			System.out.print(num + " ");
		}
	}
}
</span>