  In the first place, a novel, yet straightforward in-place integer
value-sorting algorithm is presented. It sorts in linear time using constant
amount of additional memory for storing counters and indices beside the input
array. The technique is inspired from the principal idea behind one of the
ordinal theories of "serial order in behavior" and explained by the analogy
with the three main stages in the formation and retrieval of memory in
cognitive neuroscience: (i) practicing, (ii) storage and (iii) retrieval. It is
further improved in terms of time complexity as well as specialized for
distinct integers, though still improper for rank-sorting.
  Afterwards, another novel, yet straightforward technique is introduced which
makes this efficient value-sorting technique proper for rank-sorting. Hence,
given an array of n elements each have an integer key, the technique sorts the
elements according to their integer keys in linear time using only constant
amount of additional memory. The devised technique is very practical and
efficient outperforming bucket sort, distribution counting sort and address
calculation sort family of algorithms making it attractive in almost every case
even when space is not a critical resource.
