排序---交换排序---快速排序Quick Sort
来源:互联网 发布:软件测试经典书籍 编辑:程序博客网 时间:2024/06/05 06:54
快速排序---Quick Sort
基本思路:
分治思想,将一个大的数据序列分割成两个子序列,然后再依次将两个子序列划分成更小的两个,这里就能很明显的看出快速排序的时间复杂度是与2 的对数有关。
划分的标准是找到序列中数据居中的值做为key值,怎么取得key值,就可以判断出算法的快慢来。通常比较简单的情况是将序列的第一个值做为key值。然后通过交换的思路,将序列划分为左、右两个子序列来,划分后的结果是左边的子序列的值都比key值小,右边的子序列的值都比key值大,key值居于中间。
算法实现:
int A[] = {49,38,65,97,76,13,27,49}
void qsort(int left, int right)
{
int pos = A[left];
int empty = left; /*每次都是先把最左边的取出来*/
int p = left, q = right;
int mid = 0;
/*将pos放在中间,左边的比它小,右边的比它大*/
while(p<q)
{
/*先做右边,把右边比pos小的放在pos的位置上,因为开始是把最左边的空出来了*/
while(p<q)
{
if (pos>A[q])
{
A[empty]=A[q]
empty = q;/*更改空位置*/
break;
}
else
{
q--;
}
}
while(p<q)
{
if(pos<A[p])
{
A[empty]=A[p]
empty=p;
break;
}
else
{
p++;
}
}
}
A[empty]=pos;
mid=empty;
if (left<q)
{
qsort(left,q-1);
}
if(p<right)
{
qsort(p+1,right);
}
}
- 排序---交换排序---快速排序Quick Sort
- 交换排序算法:快速排序-Quick Sort
- 【排序算法】 快速排序 quick sort(交换类排序)
- 交换排序—快速排序(Quick Sort)
- 交换排序—快速排序(Quick Sort)
- 交换排序—快速排序(Quick Sort)
- 交换排序—快速排序(Quick Sort)
- 快速排序 Quick Sort
- 快速排序(Quick sort)
- quick sort 快速排序
- 快速排序(Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort (快速排序)
- 快速排序(Quick-Sort)
- 快速排序Quick sort
- 快速排序 (Quick Sort)
- 快速排序(Quick Sort)
- Quick Sort 快速排序
- Ruby on rails开发从头来(windows)(十五)-添加用户
- 食物搭配禁忌
- JSP学习——JSP基础知识(一)
- 云计算
- Camera 图像处理原理分析篇 三
- 排序---交换排序---快速排序Quick Sort
- Android: Android Reboot流程
- 装修后空气净化
- Ruby on rails开发从头来(windows)(十四)-送货处理
- macvim语法高亮
- platform_device和platform_driver(一)
- platform_device和platform_driver(二)
- JAVA 尽量使用局部变量优化性能
- Ruby on rails开发从头来(windows)(十三)-订单(Order)