/*
对一个整数数组,求最大的(a[i]-a[j])(0<=i<j<=n-1)
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct node{
int large;
int small;
}node;
int max_;
node _get( int list[] , int s , int e ){
node cur_node;
if( s == e ) {
cur_node.large = list[ e ];
cur_node.small = list[ s ];
return cur_node;
}
int mid;
mid = ( s + e ) / 2;
node left_node = _get( list , s , mid );
node right_node = _get( list , mid + 1 , e );
if( left_node.large - right_node.small > max_ ) {
max_ = left_node.large - right_node.small;
}
if( left_node.large > right_node.large ) {
cur_node.large = left_node.large;
}
else{
cur_node.large = right_node.large;
}
if( left_node.small < right_node.small ) {
cur_node.small = left_node.small;
}
else{
cur_node.small = right_node.small;
}
return cur_node;
}
int _tmain(int argc, _TCHAR* argv[]) {
int list[ 10 ];
int i;
max_ = 0;
for( i = 0 ; i < 10 ; i ++ ) {
list[ i ] = rand() % 200;
cout << list[ i ] << " ";
}
cout << endl;
_get( list , 0 , 9 );
cout << max_ << endl;
return 0;
}
对一个整数数组,求最大的(a[i]-a[j])(0<=i<j<=n-1)
最新推荐文章于 2018-03-21 19:12:13 发布