排序算法是经常使用的排序算法,分为冒泡排序、交换排序、选择排序等简单排序和快速排序、堆排序、归并排序等稍微高效的排序。
下面共同学习一下快速排序。
快速排序的思想是,一趟排序完成后,以一个数为分割,左边都比它小,右边都比它大,这个数放在了正确的位置,但这个数的左右不是排序的。
然后,以这个数为界,递归快排函数,对左右部分进行排序。
快速排序的划分函数
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);
}
}