您的位置:首页 > 其它

排序算法之快速排序

2017-07-06 20:50 141 查看
排序算法是经常使用的排序算法,分为冒泡排序、交换排序、选择排序等简单排序和快速排序、堆排序、归并排序等稍微高效的排序。

下面共同学习一下快速排序。

快速排序的思想是,一趟排序完成后,以一个数为分割,左边都比它小,右边都比它大,这个数放在了正确的位置,但这个数的左右不是排序的。

然后,以这个数为界,递归快排函数,对左右部分进行排序。

////快速排序的划分函数
int partion(int *ar,int start,int end)
{
assert(NULL != ar);
int tmp = ar[start];
while (start < end)
{
while (ar[end]>=tmp && start<end)
--end;
ar[start] = ar[end];
while (ar[start]<=tmp && start<end)
++start;
ar[end] = ar[start];
}
ar[start] = tmp;
return start;
}
/////////快速排序/////////
void QuitSort(int *ar,int start,int end)
{
if (start < end)
{
int mid = partion(ar,start,end);
QuitSort(ar,start,mid-1);
QuitSort(ar,mid+1,end);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: