Первое, что мне пришло в голову, если бы я взялся написать такой алгоритм на C#, это использовать LINQ, что позволяет уложиться в одну строку:
var result = from s in items orderby s.Length, s select s
(здесь items - коллекция строк, которые надо отсортировать).
Я понимаю, что мне скажут "нет, без линка!", но лучше бы на другом примере преимущества Руби демонстрировать.