快速排序的递归写法
来源:互联网 发布:de beers 知乎 编辑:程序博客网 时间:2024/05/16 19:22
//*****************************快速排序(递归)****************************
//递归思想:单趟来说,begin找比key大的,end找比key小的,当各自都找到的时候,
// 若begin比end小,则交换两个数据,然后继续找,当再找到的时候,如果
// begin比end大,则比较a[begin]和key的值,若a[begin]大于key,说明
// a[begin]的位置应该是key的位置,则交换,然后以key左边和右边分别进
// 行相同操作,否则,key的位置不变
intPartSort(int*a,intleft,intright)
{
intkey =a[right];
intbegin =left;
intend =right- 1;
while(begin < end)
{
while(begin < end&&a[begin] <= key)
++begin;
while(begin < end&&a[end] >= key)
--end;
if(begin < end)
{
swap(a[begin],a[end]);
}
}
if(a[begin]>a[right])
{
swap(a[begin],a[right]);
returnbegin;
}
else
returnright;
}
voidQuickSort(int*a,intleft,intright)
{
assert(a);
if(left>=right)
return;
intmid = PartSort(a,left,right);
QuickSort(a,left, mid - 1);
QuickSort(a, mid + 1,right);
}
voidQuickSortTest()
{
//int arr[] = { 2, 0, 4, 9, 3, 6, 8, 7, 1, 5 };
intarr[] = { 2, 5, 4, 9, 3, 5, 8, 7, 1, 5 };
int_size =sizeof(arr) /sizeof(arr[0]);
QuickSort(arr, 0, _size - 1);
Print(arr, _size);
}
0 0
- 快速排序的递归写法
- 快速排序的非递归写法
- 快速排序partition过程常见的两种写法+快速排序非递归实现
- 快速排序partition过程常见的两种写法+快速排序非递归实现
- 插入排序的递归写法
- 插入排序的递归写法
- 快速排序之递归与非递归写法
- 快速排序的一种写法
- 快速排序的一种写法
- 快速排序的简单写法
- 快速排序的简洁写法
- 快速排序partition的写法
- 排序:归并排序的迭代写法与递归写法
- 快速幂函数的递归写法
- 快速排序的递归程序
- 快速排序的递归实现
- 快速排序的递归实现
- 快速排序的递归实现
- oracle 显式游标示例
- 第五章 Texture Mapping
- 【图像处理】三种边缘保持的滤波器(双边,引导,加权最小二乘)
- QT自制类分享 一图流按钮
- JavaScript--02 CSS基础 中 CSS样式表的冲突解决
- 快速排序的递归写法
- java简单排序-选择排序
- iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略
- ACM课程总结
- 用URL传值到JSP时EL表达式接收中文乱码
- leetcode 145 Binary Tree Postorder Traversal
- RNN 学习入门资源小小收集
- JAVA使用Socket模拟服务端与客户端通讯
- 快速排序的优化--三数取中法