排序【未完待续】


 

快速排序

  快排的思想主要在于每次划分确定一个元素的位置,使其左侧的元素均小于它,右侧的元素均大于它,再对左右两侧递归。

int partition(int a[], int low, int high)
{
	int x = a[high]; // 先以最右侧作为枢轴
	int j = low - 1; // j记录的是最后一个比枢轴小的位置
	for (int i = low; i < high; i++)
	{
		if (a[i] < x) // 如果a[i]比枢轴小,就将j右移一个单位,并交换i和j所指元素
		{
			int temp;
			j++;
			temp = a[j];
			a[j] = a[i];
			a[i] = temp;
		}
	}
	a[high] = a[j + 1]; // 循环结束后,从low到j的位置所对应的元素均小于枢轴,将第j+1个元素和枢轴位置交换
	a[j + 1] = x;
	return j + 1;
}

void quickSort(int a[], int low, int high)
{
	if (low < high)
	{
		int middle = partition(a, low, high);
		quickSort(a, low, middle - 1);
		quickSort(a, middle + 1, high);
	}
}

 


未完待续

 

posted @ 2018-10-08 15:09  糖醋麻辣虾  阅读(131)  评论(0编辑  收藏  举报