sorting by frequency of occurrence in an array

algorithm, ruby, sorting

Solution

a = [1,2,2,3,1,2]
a.each_with_object(Hash.new(0)){ |m,h| h[m] += 1 }.sort_by{ |k,v| v }
#=> [[3, 1], [1, 2], [2, 3]]

Problem

Is there an efficient way of doing this. I have an array ``` a=[1,2,2,3,1,2] ``` I want to output the frequency of occurrence in an ascending order. Example ``` [[3,1],[1,2],[2,3]] ``` Here is my code in ruby. ``` b=a.group_by{|x| x} out={} b.each do |k,v| out[k]=v.size end out.sort_by{|k,v| v} ```

Original source