1. 程式人生 > 其它 >c++實現快速排序

c++實現快速排序

技術標籤:快速排序c++

排序程式碼:

void quickSort(int a[], int left, int right)
{
	if (left >= right)	return;

	int i = left;
	int j = right;
	//記錄基準值
	int base = a[left];

	while (i < j)
	{
		//從右向左找小於基準值的數
		while (i < j && a[j] >= base)
			j--;

		//從左向右找大於基準值的數
		while (i < j && a[i] <= base)
			i++;

		//交換
		if (i < j)
			std::swap(a[i], a[j]);
	}

	//基準值和中間i位置交換
	a[left] = a[i];
	a[i] = base;

	//此時i左側全部小於基準值,右側全部大於基準值,從i兩邊分別遞迴即可
	quickSort(a, left, i - 1);
	quickSort(a, i + 1, right);

}

測試:

	int a[] = { 9,5,7,8,4,1,2,6,3,10 };
	std::cout << "sort before:" << std::endl;
	for (size_t i = 0; i < 9; i++)
		std::cout << a[i] << "	";
	quickSort(a, 0, 9);
	std::cout << std::endl << "sort after:" << std::endl;
	for (size_t i = 0; i < 9; i++)
		std::cout << a[i] << "	";

輸出結果: