def arraySort_ascending(a,cmp = nil)
return a if a.size < 2
cmp ? (x = a.pop) ? arraySort_ascending(a.select{|i| cmp.call(i,x) < 1 },cmp) + [x] + arraySort_ascending(a.select{|i| cmp.call(i,x) > 0},cmp) : [] : (x = a.pop) ? arraySort_ascending(a.select{|i| i <=x }) + [x] + arraySort_ascending(a.select{|i| i > x}) : []
end
示例:
temp_arr = [1,1,4,5,1,4]
ret_arr = quick_sort(temp_arr)
ret_arr = quick_sort(myMap,method(:NHCmp))
def NHCmp(nh1,nh2)
return 1 if nh1["nh"] > nh2["nh"]
return -1 if nh1["nh"] < nh2["nh"]
return 1 if nh1["intf"] > nh2["intf"]
return -1 if nh1["intf"] < nh2["intf"]
return 0
end