使用递归的快速排序算法
来源:互联网 发布:大数据研发工程师笔试 编辑:程序博客网 时间:2024/05/16 08:02
快速排序算法是C.A.R.Hoare于1962年发明
#include<stdio.h>
//使用递归的快速排序算法
//对于给定的数组,从中选择一个元素,以该元素为界将其余元素划分为两个子集,一个子集中的所有元素都小于该元素,另一个子集中的所有元素都大于或等于该元素。
//对这样的两个子集递归执行这个过程,当某个子集中的元素数小于2时,这个子集就不需要再次排序,终止递归。
void qsort(int v[],int left,int right)
{
int i,last;
void swap(int v[],int i,int j);
if(left>=right) //若数组包含的元素数少于两个 则推出递归结束
return;
swap(v,left,(left+right)/2); //取中间元素作为划分子集的参考数,首先存储参考数于v[0]
last=left;
for(i=left+1;i<=right;++i) //划分子集
{
if(v[i]<v[left])
swap(v,++last,i);
}
swap(v,left,last); //恢复划分子集的元素
qsort(v,left,last-1);
qsort(v,last+1,right);
}
void swap(int v[],int i, int j)
{
int temp;
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
以序列 4 8 6 3 7 9 为例
left =0, right=5,last=0,
将待比较对象移到数组最左端
6 8 4 3 7 9
然后对每个数组其他数据 与对比数据比较
6 8 4 3 7 9
6 4 8 3 7 9
6 4 3 8 7 9
3 4 6 8 7 9
然后对 3 4 和8 7 9 分别进行递归
得排序结果
- 使用递归的快速排序算法
- 快速排序的递归算法
- 快速排序的非递归算法(使用队列)
- 快速排序,递归算法
- 快速排序递归算法
- 快速排序算法(递归)
- 快速排序递归算法
- 递归算法 快速排序
- 快速排序--递归算法
- 快速排序的递归算法和非递归算法
- 快速排序的非递归算法
- 非递归的快速排序算法
- 快速排序算法的递归实现
- 快速排序算法的非递归实现
- 快速排序的非递归算法
- 非递归的快速排序算法
- 快速排序的递归实现算法。
- 快速排序算法的递归深度
- 浅谈网络语音技术
- C/C++ 中的main函数的argc和argv参数
- 跨所有浏览器的event事件工具类
- randn,randperm,rand
- js实现年月日三级下拉菜单联动
- 使用递归的快速排序算法
- quartz 详解
- javascript高级部分
- Tomcat6.0配置(虚拟目录的设置+多域名绑定)
- android ImageView.getDrawingCache return NULL
- android 面试
- web架构设计经验分享
- 对单元测试的思考
- Readability付费计划失败带给创业者的反思