first on O(n) sorts