算法导论笔记(一)

Insertion-Sort && Merge-Sort

Insertion-Sort(插入)

1
2
3
4
5
6
7
8
9
10
11
12
A[]={5,2,4,6,1,3}
for(j=2; j<A.length; j++)
{
key= A[j]
i=j-1
while(i>0 && A[i]>key)
{
A[i+1]= A[i]
i=i-1
}
A[i+1]=key
}

Merge-Sort(分治)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
A[]={5,2,4,6,1,3}
q=1/2A.length
n1=q,n2=A.length-q+1
for(i=0; i<n1; i++)
{
L[i]=A[i];
}
for(j=0; j<n2; j++)
{
R[j]=A[j+q];
}
L[n1+1]= ∞
R[n1+1]= ∞
i=j=1
for(k=0; k<A.length; k++)
{
if(L[i]<=R[j])
{
A[k]=L[i]
i=i+1
}else{
A[k]=R[j]
j=j+1
}
}