博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:4655 次
发布时间:2019-06-09

本文共 736 字,大约阅读时间需要 2 分钟。

排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。

其思想是:先选一个“标尺”,

用它把整个队列过一遍筛子,

以保证:其左边的元素都不大于它,其右边的元素都不小于它。

这样,排序问题就被分割为两个子区间。

再分别对子区间排序就可以了。

下面的代码是一种实现,请分析并填写划线部分缺少的代码。

#include 
void swap(int a[], int i, int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}int partition(int a[], int p, int r){ int i = p; int j = r + 1; int x = a[p]; while(1){ while(i
x); if(i>=j) break; swap(a,i,j); } #########(11);//填空位置 return j;}void quicksort(int a[], int p, int r){ if(p

注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

C/C++组 答案4 (11分)

 

看partition函数,首先让i=p,然后循环里,我们发现直接把p位置空过去了,所有交换的ij中都是p后边的位置,p处的值才是比较基准,i最后要么到达r+1,要么就是所存值比基准大,j要么是到了p位置,要么所存值比基准小,最后交换j处的值和基准即可。

转载于:https://www.cnblogs.com/8023spz/p/10440230.html

你可能感兴趣的文章
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
2.抽取代码(BaseActivity)
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
反射的所有api
查看>>
css 定位及遮罩层小技巧
查看>>
[2017.02.23] Java8 函数式编程
查看>>
sprintf 和strcpy 的差别
查看>>
JS中window.event事件使用详解
查看>>