C (especially where lower-level features are needed) Java or C++ (especially when demonstrating object-oriented algorithms or patterns), Perl, and Python. Languages with a small user base like Smalltalk or Eiffel are discouraged.

There is some controversy about sample implementations in Ruby and pseudocode. Ruby has an advantage of being very readable and a disadvantage of not being very popular. Some people prefer pseudocode, because an algorithm in pseudocode isn't obfuscated by implementation details. This is a major advantage as compared to some other languages (like C), but is a very small advantage as compared to other languages (like Python and Ruby). Other arguments against pseudocode are that it's not standardized and is hard to test.

Dialects of Pascal and BASIC can have considerable incompatibilities, so if those languages are used, care should be taken to use only their most universal features. It's good to avoid language-specific constructs in examples. For example, Perl code should avoid the use of that language's more unique and unusual features that programmers of other languages may find confusing.

Using iteration is usually preferred over using tail recursion because this is a more popular way of coding and because popular implementations of some languages do not support constant-space tail recursion.

In the case when these hints aren't sufficient to make decisions, it's okay to provide more than one sample implementation.

A list of algorithms is available.