您的位置:首页 > 其它

快速排序

2016-03-15 19:43 197 查看
//快速排序
void QSort(int a[], int Low, int High)
{
if(Low > High)
return;
int Left = Low;
int Right = High;
int x = a[Low];   //以最左边一个作为枢纽元
while(Left < Right)
{
//从右向左找到第一个小于枢纽元的值,放到此时的left上
while(Left < Right && a[Right] >= x)
--Right;
a[Left] = a[Right];
//从左到右找到第一个大于枢纽元的,放到此时的right上
while(Left < Right && a[Left] <= x)
++Left;
a[Right] = a[Left];
}
a[Left] = x;	//枢纽元放在left上
//整个while运行完后,枢纽元左边的都是比他小的,右边的都是比他大的,然后再分治
QSort(a, Low, Left-1);
QSort(a, Left+1, High);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: