算法导论笔记(二)

Find-Maxing-Crossing-Subarray && Min-Heapify

Find-Maxing-Crossing-Subarray(最大子数组)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
A(low,mid,high)
leftsum=-∞
sum=0
for(i=mid; i>low; i--)
{
sum=sum+A[i]
if(sum>leftsum)
{
leftsum=sum
maxleft=i
}
}
rightsum=-∞
sum=0
for(j=mid+1; j<high; j++)
{
sum=sum+A[j]
if(sum>rightsum)
{
rightsum=sum
maxright=j
}
}

Min-Heapify(最小堆)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Min-HEAPIFY(A,i)
l=LEFT(i)
r=RIGHT(i)
if(l<=A.heapsize && A[l]<A[i])
{
smallest=l
}else
{
smallest=i
}
if(r<=A.heapsize && A[r]<A[smallest])
{
smallest=r
}
if(smallest!=i)
{
exchange A[i] with A[smallest]
Min-HEAPIFY(A,smallest)
}