17.01.2013 Views

Data Structures and Algorithm Analysis in C - SVS

Data Structures and Algorithm Analysis in C - SVS

Data Structures and Algorithm Analysis in C - SVS

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Structures</strong>, <strong>Algorithm</strong> <strong>Analysis</strong>: CHAPTER 2: ALGORITHM ANALYSIS<br />

We see, then, that among the three ways to form a large maximum subsequence, for<br />

our example, the best way is to <strong>in</strong>clude elements from both halves. Thus, the<br />

answer is 11. Figure 2.7 shows an implementation of this strategy.<br />

<strong>in</strong>t<br />

max_sub_sequence_sum( <strong>in</strong>t a[], unsigned <strong>in</strong>t n )<br />

{<br />

return max_sub_sum( a, 0, n-1 );<br />

}<br />

<strong>in</strong>t<br />

max_sub_sum( <strong>in</strong>t a[], <strong>in</strong>t left, <strong>in</strong>t right )<br />

{<br />

<strong>in</strong>t max_left_sum, max_right_sum;<br />

<strong>in</strong>t max_left_border_sum, max_right_border_sum;<br />

<strong>in</strong>t left_border_sum, right_border_sum;<br />

<strong>in</strong>t center, i;<br />

/*1*/ if ( left == right ) /* Base Case */<br />

/*2*/ if( a[left] > 0 )<br />

/*3*/ return a[left];<br />

else<br />

/*4*/ return 0;<br />

/*5*/ center = (left + right )/2;<br />

/*6*/ max_left_sum = max_sub_sum( a, left, center );<br />

/*7*/ max_right_sum = max_sub_sum( a, center+1, right );<br />

/*8*/ max_left_border_sum = 0; left_border_sum = 0;<br />

/*9*/ for( i=center; i>=left; i-- )<br />

{<br />

/*10*/ left_border_sum += a[i];<br />

/*11*/ if( left_border_sum > max_left_border_sum )<br />

/*12*/ max_left_border_sum = left_border_sum;<br />

mk:@MSITStore:K:\<strong>Data</strong>.<strong>Structures</strong>.<strong>and</strong>.<strong>Algorithm</strong>.<strong>Analysis</strong>.<strong>in</strong>.C.chm::/...<br />

页码,15/30<br />

2006-1-27

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!