栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

快速排序简单版

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速排序简单版

#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<<"快速排序前:"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号