Could my algorithm be considered Divide-and-Conquer?
TL;DR
Divide and concur doesn't have any rigorous definition.  So any argument you make for or against will be just an emotional argument.  The situation is made worse by the fact that the task accomplished by this algorithm doesn't need D&amp;C.  So, the answer is &quot;probably&quot;.
Long version
One scenario where it would make sense to use D&amp;C in finding the minimum is a distributed system (eg. Hadoop), where the size of input may require from you that you do computation in chunks.  The algorithm as you designed it is not suitable for this task because it would have to communicate the best result found so far to all parts of the program handling the computation of each chunk.  The version I've written below eliminates this problem by computing local minima for given sublists and then calculating the minima of the previously computed minima and so on.  This feels (remember emotional argument?) more like D&amp;C.  Besides, it makes the algorithm more language-agnostic and eliminates the corner-case errors.

Empty lists have no minimum.
Lists with only one element have only one minimum (not two).
If a list happens to have more than one minimum element, then the second minimum will be equal to first minimum.
Solution doesn't require guessing the minimum before running the algorithm.

The code is set in Prolog.  I believe it is better than conventional pseudo-Pascal in that it allows to avoid &quot;uninteresting&quot; parts of the algorithm.
two_mins([], _, _) :- !, fail.  /* Empty list has no minimum */
two_mins([Min1], Min1, _) :- !. /* There is only one element */
two_mins([Min1, Min2], Min1, Min2) :- Min1 &lt; Min2, !.
two_mins([Min1, Min2], Min2, Min1) :- !.
two_mins(List, Min1, Min2) :-
    length(List, N),
    LenA is N div 2,
    length(A, LenA),
    append(A, B, List),
    two_mins(A, Min1A, Min2A),
    two_mins(B, Min1B, Min2B),
    Min1 is min(Min1A, Min1B),
    /* In case A or B had only one element, we will get
       rid of non-instantiated solutions. */
    include(ground, [Min2A, Min2B], Ground),
    min_list([max(Min1A, Min1B) | Ground], Min2).