computer science problem collection data values keys designed applied problems keys floating point numbers text strings ability perform keys allows faster comparison cases depending details operations allowed model computing large including sort counting sort sort widely practical smaller worst case time bounds believed practical computer fewer bits word known performance depending combination number items number bits key number bits word computer performing general considerations models time bounds typically depend parameters number data values magnitude largest possible key number bits represented single machine word computer performed typically assumed max machine words large represent index sequence input data large represent single key usually designed work machine random access machine models computing main difference models memory addressed random access machine allows value stored register address memory read write operations unit cost operation ability allows certain complex operations data implemented quickly table contrast machine model read write operations use addresses stored allowed perform operations models data values added operations shift operations typically performed unit time operation different different assumptions allowed unit time operation specialized models parallel random access machine considered showed cases table required replaced operations easily implemented hardware typically available general purpose computers improved showing replace special operations bit field manipulation instructions available versus priority priority queue data structure maintaining collection items numerical priorities having operations finding removing item minimum priority value comparison based priority time update structures tree bucket queue faster priorities small data structures selection sort sorts collection elements repeatedly finding removing smallest element collection returning elements order found priority queue maintain collection elements time collection elements bounded time priority queue perform find remove operations instance priority queue selection sort leads sort comparison takes log time instead selection sort bucket queue gives form sort van trees priority leads fast instead priority queue possible direction use priority queue data structure idea possible perform time key time bound applies time operation priority queue data structure reduction complicated assumes availability fast operations table provides alternative priority queue addition operations time log log log operation time classical sort counting sort sort widely practical subsequent research focused theoretical improvements worst case analysis come line research believed practical current bit computer experiments shown methods improvement data bits key additionally large data sets near random memory access patterns handicap compared comparison designed memory hierarchy mind provides high productivity computing systems mathematics suite suite practical sort counting sort sort data items having keys range time sort called bucket sort data items distributed table represented collection data types linked lists keys table form output list counting sort uses table place table determine number items key prefix sum determine range positions output values key placed finally second pass input item moved key position output array involve simple loops input data taking time set possible keys taking time giving overall time bound sort works larger keys sort counting sort performing multiple passes data pass sorts input keys different sort counting sort suited small keys break keys parts sort key according chosen key pass digit key starting significant digit progressing significant work correctly pass data stable items equal change positions greatest efficiency chosen near number data items additionally power near allows keys pass quickly fast shift mask operations choices sort counting sort base sort data items having keys range time theoretical developed theoretical analysis shows behave better comparison large combinations parameters defining number items range keys machine word size best performance depends values parameters despite theoretical advantages improvement typical ranges parameters arise practical problems small keys van tree priority queue sort set keys range time log log theoretical improvement sufficiently large order use van tree needs directly memory words needs simulate table reducing space linear making priority queue similar performance including need form tables fast sophisticated technique similar flavor better theoretical performance developed observed pass sort interpreted range reduction technique linear time reduces maximum key size factor instead technique reduces key size square root previous value number bits needed represent key linear time sort interpret keys digit base numbers base approximately group items according high linear time large direct addressed memory table bucket representative item bucket largest key sort list items keys high representatives low non representatives grouping items list bucket placed order representatives list order linear time problem reduced problem keys smaller square root previous magnitude repeating range reduction keys small bucket sort leads running time log complicated allows time bounds reduced farther log log large words said non conservative requires word size significantly larger log max extreme instance keys distinct set keys linear time representing bit position input keys repeatedly removing significant bit non conservative packed uses based network merging sequences keys short packed single machine word input packed sequence items stored word transformed packed form sequence words holding multiple items order repeatedly double number items packed word sequence packed form use form merge sort sort sequences merged form single longer sequence repeatedly extract packed words consisting smallest remaining elements sequences gains packed representation sort input linear time possible single word contain log log log keys log log log log constant items sort counting sort sort tree work best key size small large keys slower comparison key size word size large relative number items number items small possible sort quickly different advantage inherent ability perform operations large words early result direction provided cell probe model artificial model complexity measured number memory performs building work described data structures atomic random access machine bit parallel version allows priority queue operations successor predecessor performed constant time sets log items size tables needed implement data structure atomic tree tree represented allows constant time priority queue operations sets log items provide called signature sort allows linear time sets log items time constant perform range reduction representation keys numbers base careful choice range reduction replaces digit signature value log bits different digit values different signatures sufficiently small numbers formed replacement process significantly smaller original keys allowing non conservative packed sort replaced numbers linear time list replaced numbers possible form compressed keys linear time children keys size tree produces order items trans introduced model analysis assumed range keys bound performance function number data values alternatively model running time set items assumed worst case running time possible combination values type fusion tree runs time log log log improvement comparison choice alternative version includes use random numbers division operations improves log work better developed instance repeatedly applying range reduction technique keys small apply packed possible sort time log log range reduction requires large memory proportional form tables showed sort time log log technique involves ideas related signature partition data small size small signature sort efficiently possible use similar ideas sort time log log linear space simple operations table possible sort expected time log log time log log constant
Integer sorting