digitalmars.D.learn - sort associative array on values
- Jan Hanselaer (8/8) May 10 2007 Hi,
- Daniel Keep (33/44) May 10 2007 I would imagine you would need a reverse mapping from value->key, sort
Hi, It is easy to output a associative array sorted on his keys but does anyone know how to do it with the values sorted? I use associative arrays for frequency tables (for char[] en char) and I would like to output those sorted by value, and if that would be possible, also by key for equal values. Anyone ever tried this of has any ideas? Thanks in advance! Jan
May 10 2007
Jan Hanselaer wrote:Hi, It is easy to output a associative array sorted on his keys but does anyone know how to do it with the values sorted? I use associative arrays for frequency tables (for char[] en char) and I would like to output those sorted by value, and if that would be possible, also by key for equal values. Anyone ever tried this of has any ideas? Thanks in advance! JanI would imagine you would need a reverse mapping from value->key, sort that, and go from there. You could probably do it with an array of structs: struct ValueKey!(vT, kT) { vT value; kT key; int opCmp(ValueKey!(vT,kT) rhs) { return (value < rhs.value) : -1 ? ((key < rhs.key) : -1 ? 1); } } ValueKey!(vT,kT)[] map; map.length = freq_aa.keys.length; size_t i = 0; foreach( k,v ; freq_aa ) map[i++] = ValueKey!(vT,kT)(v,k); map.sort; Note: not tested, but that should get you going in the right direction. -- Daniel -- int getRandomNumber() { return 4; // chosen by fair dice roll. // guaranteed to be random. } http://xkcd.com/ v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/
May 10 2007