快速排序
发布时间:2015-11-24 栏目:软件算法 评论:0 Comments
快速排序法原理也是用了分治法,主要原理是将数组分为A[p..q-1] 和A[q+1..r],然后调整元素使得A[p..q-1]小于等于q,也小于等于A[q+1..r]。然后不断的递归,到最后就排序完成。
#include
#include
size_t partition(int* datas,int beg,int last);
void quick_sort(int* datas,int beg,int last);
void swap(int *a,int *b);
int main()
{
size_t i;
int datas[10] = {78,13,9,23,45,14,35,65,56,79};
printf(“After quick sort,the datas is:\n”);
quick_sort(datas,0,9);
for(i=0;i<10;++i)
printf(“%d “,datas[i]);
printf(“\n”,datas[i]);
exit(0);
}
void swap(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
size_t partition(int* datas,int beg,int last)
{
int pivot = datas[last];
int i,j;
i = beg -1;
for(j=beg;j<last;j++)
{
if(datas[j] < pivot)
{
i = i+1;
swap(datas+i,datas+j);
}
}
swap(datas+i+1,datas+last);
return (i+1);
}
void quick_sort(int* datas,int beg,int last)
{
int pivot;
if(beg < last)
{
pivot = partition(datas,beg,last);
quick_sort(datas,beg,pivot-1);
quick_sort(datas,pivot+1,last);
}
}
其中第一次分治法调用示意图如下:
留下评论
You must be logged in to post a comment.
近期评论
- Pika发表在《莫里斯蠕虫(Morris Worm)》
- Pika发表在《多组学科研分析》
- crisy发表在《最近关于专利的一点感想》
- walter发表在《机器学习基础知识回顾-马尔科夫过程(Markov Process)》
文章归档
- 2024年3月
- 2024年2月
- 2023年12月
- 2023年11月
- 2023年10月
- 2023年9月
- 2023年8月
- 2023年7月
- 2023年6月
- 2023年5月
- 2023年4月
- 2023年3月
- 2023年2月
- 2023年1月
- 2022年12月
- 2022年11月
- 2022年9月
- 2022年8月
- 2022年7月
- 2022年6月
- 2022年5月
- 2022年3月
- 2022年2月
- 2022年1月
- 2021年12月
- 2021年11月
- 2021年10月
- 2021年9月
- 2021年8月
- 2021年7月
- 2021年6月
- 2021年5月
- 2021年4月
- 2021年2月
- 2021年1月
- 2020年12月
- 2020年11月
- 2020年10月
- 2020年8月
- 2020年7月
- 2020年6月
- 2020年5月
- 2020年4月
- 2020年3月
- 2020年2月
- 2019年7月
- 2019年5月
- 2019年3月
- 2019年1月
- 2018年6月
- 2018年5月
- 2018年4月
- 2018年3月
- 2018年2月
- 2017年11月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年3月
- 2016年12月
- 2016年11月
- 2016年10月
- 2016年9月
- 2016年8月
- 2016年7月
- 2016年6月
- 2016年5月
- 2016年4月
- 2016年3月
- 2016年2月
- 2016年1月
- 2015年12月
- 2015年11月