快速排序简单版

快速排序简单版,第1张

快速排序简单版
#include
using namespace std;
int Partition(int a[], int low, int high)   //进行一趟排序,返回枢轴部分 
{
	a[0] = a[low];                   //用子表的第二个元素做枢轴 
	int pivotkey = a[low];           //把枢轴记录存在pivotkey中 
	while (low < high)               //从表的两边向中间交替 
	{
		while (low < high&&a[high] >= pivotkey)     
			--high;
		a[low] = a[high];             //比枢轴小的记录移到low指示的空位上 
		while (low < high&&a[low] <= pivotkey)
			++low;
		a[high] = a[low];             //比枢轴大的记录移到high指示的空位上
	}
	a[low] = a[0];                   //把枢轴移到左右子表中间的位置 
	return low;                       //返回枢轴位置 
}
int Func(int a[])                     //确定表长 
{
	int *m = a;
	while (*m++);
	m--;
	return(m - a);
}
void QSort(int a[], int low, int high)       
{
	if (low < high)                    //判断长度大于1 
	{
		int pivotloc = Partition(a, low, high);         //左右子表的排序同时进行。知道low=high 
		QSort(a, low, pivotloc-1);          //对左子表递归排序     
		QSort(a, pivotloc+1, high);          //对右子表递归排序 
	}
}
void QuickSort(int a[])                  //快速选择排序 
{
	int n = Func(a);
	QSort(a, 1, n-1);               
}
void Print(int a[])               //输出顺序表 
{
	int n = Func(a);
	for (int i = 1;i < n;i++)
		cout << a[i]<<"   "<< endl;
}
int main() 
{
	int a[20] = {19,13,47,35,67,29,50,34,18,90,10 };
	cout<<"快速排序前:"<					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存