Implemention of Partition Function

 partition是一个非常有用,且常见的操作,因此,探讨他的高效实现是非常有意义的一件事情,在上一篇文章里,已经给出了两种实现方式,本文在给出两种实现方式.实现方式的巧妙我无法用语言告诉你,只用你自己去体会了.

version I

int  partition( int   * array,  int  low,  int  high)  {
    
int pivotpos = low;
    
int pivot = array[pivotpos];
    
    
for ( int i = low + 1; i <= high; ++ i ) {
        
if ( array[i] < array[pivotpos] && ++ pivotpos != i )
            swap( array[i], array[pivotpos] );
    }

    
    swap ( array[low], array[pivotpos] );
    
    
return pivotpos;
}

 

version II

 

int  partition( int   * array,  int  low,  int  high)  {
    
int pivot = array[high];
    
int i = low - 1;
    
for (int j = low; j < high; ++ j) {
        
if (array[j] <= array[pivot]) {
            
++ i;
            swap( array[i], array[j] );
        }

    }

    swap( array[i 
+ 1], array[high] );
    
return i + 1;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值