排序算法之快速排序
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);
}
}
下面共同学习一下快速排序。
快速排序的思想是,一趟排序完成后,以一个数为分割,左边都比它小,右边都比它大,这个数放在了正确的位置,但这个数的左右不是排序的。
然后,以这个数为界,递归快排函数,对左右部分进行排序。
////快速排序的划分函数
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);
}
}
相关文章推荐
- 【DS】排序算法之快速排序(Quick Sort)
- 常用算法总结之排序(四)----快速排序
- 【算法-排序之二】快速排序
- 学习算法 -- 马桶排序、冒泡排序和快速排序
- 基础算法--排序:之快速排序
- 排序算法-快速排序
- 算法:交换排序之快速排序
- 算法--排序--分治与快速排序
- 【每日算法】交换排序算法之快速排序
- 交换排序算法---冒泡排序与快速排序
- 坐在马桶上学算法@最常用的排序——快速排序
- 算法导论 第七章快速排序与随机快速排序
- 算法 - 排序 - 快速排序
- 【数据结构和算法之排序】快速排序
- 常见排序算法之快速排序
- 排序算法之快速排序
- 我要写算法(三)——排序之快速排序
- 算法-排序-快速排序(QuickSort)分析
- 有意思的排序算法-快速排序
- 排序算法之快速排序