码迷,mamicode.com
首页 > 其他好文 > 详细

[算法]找出数组当中的中枢元素

时间:2014-07-11 22:35:51      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   width   

给定一个整型数组,找出pivot,使得对于任意i < pivot,a[i] <=a[pivot],对于i > pivot,a[i]>=a[pivot],只能用一个额外的数组,和少量空间。

思路

1、使用一个数组t记录,t[i]记录的是a[0]~a[i]的最大值

int *t = new int[n];
for(int i = 0, max = ~0; i < n; ++i){
    if(a[i] > max){
        max = a[i];
    }
    t[i] = max;
}

2、从a的尾部首部遍历,使用min记录a[i]~a[n-1]的最小值,倘若min >= t[i],表示i 即为中枢元素的索引

int pivot =-1;
for(int i = n-1, min = 0x7fffffff; i >= 0; --i){
    if(a[i] < min){
        min = a[i];
    }
    if(min >= t[i]){
        pivot = i;
        break;
    }
}
delete[] t;

 

 

bubuko.com,布布扣
本文基于知识共享署名-非商业性使用 3.0 许可协议进行许可。欢迎转载、演绎,但是必须保留本文的署名林羽飞扬,若需咨询,请给我发信

[算法]找出数组当中的中枢元素,布布扣,bubuko.com

[算法]找出数组当中的中枢元素

标签:style   blog   http   color   使用   width   

原文地址:http://www.cnblogs.com/zhengyuhong/p/3833086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!