partition算法的3种形态
来源:互联网 发布:高中网络培训 编辑:程序博客网 时间:2024/04/30 01:30
1)原地重写法:条件是小于轴,不符合交换到后面
int partition1(int a[], int begin, int end){ if(end-begin<1) return end-begin; int i=begin+1; for(int j=begin+1;j<end;j++) { if(a[j]<a[begin]) { swap(a[i],a[j]); i++; } } swap(a[begin],a[i-1]); return i-1;}
2) 挖坑填数法
int partition2(int a[], int begin, int end){ if(begin>end) return -1; if(begin==end) return 0; int x=a[begin]; while(begin<end) { while(begin<end && a[end]>=x) end--; if(begin<end) a[begin]=a[end]; while(begin<end && a[begin]<x) begin++; if(begin<end) a[end]=a[begin]; } a[begin]=x; return begin;}
3)经典两头交换法
int partition3(int a[], int begin, int end){if(begin>end) return -1; if(begin==end) return 0; int i= begin+1,j=end; while(i<j) { while(i<j && a[i]<a[begin]) i++; while(i<j && a[j]>=a[begin]) j--; if(i<j) swap(a[i],a[j]); } if(a[i]<a[begin]) i++; swap(a[i-1],a[begin]); return i-1;}
0 0
- partition算法的3种形态
- Unity中Shader的3种形态
- 成交量的五种形态
- new的三种形态
- new的三种形态
- NAT的三种形态
- 深入new/delete:New的3种形态
- 深入new/delete:New的3种形态
- 深入new/delete:New的3种形态
- 深入new/delete:New的3种形态
- partition算法思想的应用
- 被忽视的 partition 算法
- 爱情的几种形态(转贴)
- 成交量的五种形态(转载)
- 浅谈外链的几种形态
- C++ - 区分new的三种形态
- 区分new的三种形态
- c++ new的三种形态
- UVA10001
- 关于weblogic下使用URL.openConnection获取连接返回javax.net.ssl.SSLKeyException错误
- python3生成Excel报告
- select语句的结果集直接发向客户端的(一个SQL语句会前后进行各种调用,包括解析(parse)调用、执行(executive)调用、获取(fetch)调用)
- mysql中出现的Data truncated for column
- partition算法的3种形态
- JDK常用命令及其常用选项
- Java程序员常犯的10个错误
- 详解Android中AsyncTask的使用
- C/C++模版特化、偏特化、全特化
- Could not get lock/var/lib/apt/lists错误的处理
- Live555中RTP包的打包与发送过程分析
- poj -- 2778 DNA Sequence && hdu -- 2243 考研路茫茫——单词情结(AC自动机 + 矩阵)
- uva 1335Beijing Guards