Algorithms for Merging and Sorting Data Files
Merging two sorted files
Merge(VectorA, VectorB, VectorC)
I=J=K=1
WHILE I ≤ M AND J ≤ N DO
IF VectorA(I) < VectorB(J) THEN
VectorC(K) = A(I)
I=I+1
K=K+1
ELSE
IF VectorA(I) > B(J) THEN
VectorC(K) = VectorB(J)
J=J+1
K=K+1
ELSE
VectorC(K) = VectorA(I)
I=I+1
J=J+1
K=K+1
ENDIF
ENDIF
ENDWHILE
IF I > M THEN
FOR R = J TO N STEP 1 DO
VectorC(K) = VectorB(R)
K= K + 1
NEXT R
ELSE
FOR R = I TO M STEP 1 DO
VectorC(K) = VectorA(R)
K=K+1
NEXT R
ENDIF
END
Algorithm for Insertion Sort
{Look at each card in turn, starting with the second card}
FOR Position = 2 to n DO
CurrentValue = Vector[Position]
{Keep value of current number}
{and store it in position 0}
Vector[0] = CurrentValue
{Now look at each number to the left of current number (Position – 1) and move
each number right if it is greater than CurrentValue. If the number is not greater
than CurrentValue, insert CurrentValue.}
Pointer = Position - 1
WHILE Vector[Pointer] > CurrentValue DO
Vector[Pointer + 1] = Vector[Pointer]
{Move left one place}
Pointer = Pointer – 1
ENDWHILE
Vector[Pointer + 1] = CurrentValue
ENDFOR
END
Algorithm for Quick Sort
QuickSort(Vector, LB, UB)
IF LB <> UB THEN
{There is more than one element in Vector, therefore it needs sorting}
Set I = LB
Set J = UB
REPEAT
WHILE I <> J AND Vector[I] < Vector[J] DO
{Move right pointer left}
Make J = J – 1
ENDWHILE
IF I<> J THEN swap Vector[I] and Vector[J]
WHILE I <> J AND Vector[I] < Vector[J] DO
{Move left pointer right}
Make I = I + 1
ENDWHILE
IF I <> J THEN swap Vector[I] and Vector[J]
UNTIL I = J
{Value now in correct position}
{So sort left sublist}
QuickSort(Vector, LB, I – 1)
{Now sort right sublist}
QuickSort(Vector, I + 1, UB)
ENDIF
END