Sorting in Linear Time?

Total Page:16

File Type:pdf, Size:1020Kb

Sorting in Linear Time? Sorting in Linear Time? ¡ ¢ Arne Andersson Torben Hagerup Stefan Nilsson Rajeev Raman Abstract integers in the range ¥b¦¨¦c¤2 d in linear time via bucket sort- ing, thereby demonstrating that the comparison-based lower We show that a unit-cost RAM with a word length of £ bits bound can be meaningless in the context of integer sorting. ¥§¦¨¦ © ¤ ¤ can sort ¤ integers in the range in Integer sorting is not an exotic special case, but in fact time, for arbitrary £ ¤ , a signi®cant improvement is one of the sorting problems most frequently encountered. $¤ over the bound of !¤#" achieved by the fusion trees Aside from the ubiquity of integers in algorithms of all kinds, of Fredman and Willard. Provided that £%%&'(¤*)*+-, , for we note that all objects manipulated by a conventional com- some ®xed .0/1¥ , the sorting can even be accomplished in puter are represented internally by bit patterns that are inter- linear expected time with a randomized algorithm. preted as integers by the built-in arithmetic instructions. For Both of our algorithms parallelize without loss on a unit- most basic data types, the numerical ordering of the repre- cost PRAM with a word length of £ bits. The ®rst one yields senting integers induces a natural ordering on the objects rep- 2¤ ¤ an algorithm that uses 23 $¤ time and op- resented; e.g., if an integer represents a character string in the erations on a deterministic CRCW PRAM. The second one natural way, the induced ordering is the lexicographic order- yields an algorithm that uses 3(4¤ expected time and ing among character strings. This is true even for ¯oating- !¤ expected operations on a randomized EREW PRAM, point numbers; indeed, the IEEE 754 ¯oating-point standard .7/8¥ provided that £53(4¤6)*+-, for some ®xed . was designed speci®cally to facilitate the sorting of ¯oating- Our deterministic and randomized sequential and parallel point numbers by means of integer-sorting subroutines [13, algorithms generalize to the lexicographic sorting problem p. 228]. Most sorting problems therefore eventually boil of sorting multiple-precision integers represented in several down to sorting integers or, possibly, multiple-precision in- words. tegers stored in several words. Classical algorithms for integer sorting require assump- tions about the size of the integers to be sorted, or else have a 1 Introduction running time dependent on the size. Bucket sorting requires ¥§¦e¦¤f the ¤ input keys to be in the range . Radix sorting Sorting is one of the most fundamental computational prob- in g phases, each phase implemented via bucket sorting, can 2¤ $¤ lems, and ¤ keys can be sorted in time by any ¥§¦e¦¤ih# j !¤gC sort ¤ integers in the range in time. A more of a number of well-known sorting algorithms. These algo- sophisticated technique, due to Kirkpatrick and Reisch [14], rithms operate in the comparison-based setting, i.e., they ob- reduces this to ¤ kgC , but the fact remains that as the size tain information about the relative order of keys exclusively of the integers to be sorted grows to in®nity, the cost of the through pairwise comparisons. It is easy to show that a run- sorting also grows to in®nity (or to lm¤ ¤ , if we switch ning time of ¤ $¤ is optimal in the comparison-based to a comparison-based method at the appropriate point). model. However, this model may not always be the most natural one for the study of sorting problems, since real ma- If we allow intermediate results containing many more bits chines allow many other operations besides comparison. Us- than the input numbers, we can actually sort integers in linear time independently of their size, as demonstrated by Paul and ing indirect addressing, for instance, it is possible to sort ¤ Simon [18] and Kirkpatrick and Reisch [14]. But again, from 9 Department of Computer Science, Lund University, Box 118, S±221 00 a practical point of view, this is not what we want, since a real J*F¨>6KL:*=<?<@A=¨:CBED F<HCBEJ<> Lund, Sweden. :<;*=¨>*?A@<=¨:CBEDGF6HIBEJ*> , M machine is unlikely to have unit-time instructions for operat- Max-Planck-Institut furÈ Informatik, D±66123 Saarbrucken,È Germany. Supported by the ESPRIT Basic Research Actions Program of the EU un- ing on integers containing a huge number of bits. Instead, if £ der contract No. 7141 (project ALCOM II). F¨NA;*O¨>*=<?GP¨QSR6T<J OUBVP¨QAWXBY@¨> the input numbers are -bit integers, we would like all inter- Z Department of Computer Science, King's College London, Strand, Lon- mediate results computed by a sorting algorithm to ®t in £ don WC2R 2LS, U. K. ;<: PL:*=A?<@¨[<JCB]\¨[AD^B_:6[`Ba*\ bits as wellÐin the terminology of Kirkpatrick and Reisch, the algorithm should be conservative. In this case it is real- istic to assume that a full repertoire of ªreasonableº instruc- tions can be applied to word-sized operands in constant time. In the remainder of the paper, when nothing else is stated, we will take ªsortingº to mean sorting £ -bit words on a unit-cost RAM with a word length of £ bits. ¤ '($¤ Fredman and Willard [9] were the ®rst to show that ¤ arbi- optimal if . trary integers can be sorted in !¤'(¤ time by a conserva- Our results ¯ow from the combination of the two tech- tive method. Their algorithm, based on fusion trees, sorts ¤ niques of packed sorting and range reduction. Packed sort- ¤ ¤ integers in " time. We describe two simple algo- ing, introduced by Paul and Simon [18] and developed further rithms that improve their result. It should be noted that fusion in [12] and [2], saves on integer sorting by packing several trees have other uses besides sorting, such as in ef®cient data integers into a single word and operating simultaneously on structures, to which our results do not apply. all of them at unit cost. This is only possible, of course, if several integers to be sorted ®t in one word, i.e., packed sort- Our ®rst algorithm works in 2¤ $¤ time. It uses arithmetic instructionsdrawn from what we call the restricted ing is inherently nonconservative. Range reduction, on the instruction set, including comparison, addition, subtraction, other hand, reduces the problem of sorting integers in a cer- bitwise AND and OR, and unrestricted bit shift, i.e., shift of an tain range to that of sorting integers in a smaller range. The entire word by a number of bit positions speci®ed in a second combination of the two techniques is straightforward: First word. As is not dif®cult to see, these instructions are all in range reduction is applied to replace the original full-size in- ¡ AC , i.e., they can be implemented through constant-depth, tegers by smaller integers of which several ®t in one word, polynomial-size circuits with unbounded fan-in. Since this is and then these are sorted by means of packed sorting. known not to be the case for the multiplicationinstruction[4], As a purely technical point, we assume a machine architec- which is essential for the fusion-tree algorithm, our algorithm ture that always allows us to address enough working mem- can also be viewed as placing less severe demands on the un- ory for our algorithms, even when £ is barely larger than £ '(¤ 6e derlying hardware; this answers a question posed by Fredman (¤ (this is an issue only for , in which and Willard (an answer to this question is already implicit in case radix sorting works in linear time and space). Also, [3]). Also, the algorithm by Fredman and Willard is nonuni- standard algorithms for multiple-precision arithmetic allow form, in the sense that a number of precomputed constants us to assume constant-time operations on words of !£ bits, rather than exactly £ bits. depending on £ need to be included in the algorithm. Our algorithms need to know the value of £ itself, but no other precomputed constants. 2 Sorting in © log log time Our second algorithm is randomized and works in ¤ & $¤6)*+-, expected time, provided that £ for some ®xed Our goal in this section is to prove the following theorem. ¥ .f/ . Suf®ciently large integers can thus be sorted in lin- £ ear expected time by a conservative algorithm. The algo- Theorem 1 For all given integers ¤ and ¤ ¥§¦e¦c© rithm uses a full instruction set that augments the restricted (¤ , integers in the range can be sorted in instruction set with instructions for multiplication and ran- 2¤ ¤ time on a unit-cost RAM with a word length of £ bits and the restricted instruction set. dom choice, where the latter takes an operand ¢ in the range $¦e¦c© and returns a random integer drawn from the uni- £ £ For all positive integers ¤ and with , denote by ¥¤e¦¨¦e¦¦¤§¢©¨ form distributionover and independent of all other ¤A ¤ !¤ the worst-case time needed to sort integers of bits such integers. £ each, assuming and to be known. A sequential version of Ben-Amram and Galil [5, Theorem 5] have shown that, un- a parallel algorithm due to Albers and Hagerup [2] shows that !¤'($¤ der some circumstances, sorting requires time on ¤A 5!¤ ¤! "#_£%$ & ¤ $(4¤ & !¤ for all and , a RAM with an instruction set consisting of comparison, ad- 3 k¤ ( (¤ i.e., provided that keys can be packed into dition, subtraction, multiplication, and bitwise boolean oper- one word, sorting can be accomplished in linear time. This ations. While it is possible to simulate left shifts using multi- follows directly from Corollary 1 of [2]. (The corollary re- plication in their model, their lower bound does not apply if $()(+* quires a quantity ' to be known, but it is easy to see right shifts are allowed. We, on the other hand, assume that that it suf®ces, in our case, to know the word length £ .) We the complexity of left and right shifts is the same (as indeed sketch the algorithm to illustrate its simplicity.
Recommended publications
  • Sorting Algorithms Correcness, Complexity and Other Properties
    Sorting Algorithms Correcness, Complexity and other Properties Joshua Knowles School of Computer Science The University of Manchester COMP26912 - Week 9 LF17, April 1 2011 The Importance of Sorting Important because • Fundamental to organizing data • Principles of good algorithm design (correctness and efficiency) can be appreciated in the methods developed for this simple (to state) task. Sorting Algorithms 2 LF17, April 1 2011 Every algorithms book has a large section on Sorting... Sorting Algorithms 3 LF17, April 1 2011 ...On the Other Hand • Progress in computer speed and memory has reduced the practical importance of (further developments in) sorting • quicksort() is often an adequate answer in many applications However, you still need to know your way (a little) around the the key sorting algorithms Sorting Algorithms 4 LF17, April 1 2011 Overview What you should learn about sorting (what is examinable) • Definition of sorting. Correctness of sorting algorithms • How the following work: Bubble sort, Insertion sort, Selection sort, Quicksort, Merge sort, Heap sort, Bucket sort, Radix sort • Main properties of those algorithms • How to reason about complexity — worst case and special cases Covered in: the course book; labs; this lecture; wikipedia; wider reading Sorting Algorithms 5 LF17, April 1 2011 Relevant Pages of the Course Book Selection sort: 97 (very short description only) Insertion sort: 98 (very short) Merge sort: 219–224 (pages on multi-way merge not needed) Heap sort: 100–106 and 107–111 Quicksort: 234–238 Bucket sort: 241–242 Radix sort: 242–243 Lower bound on sorting 239–240 Practical issues, 244 Some of the exercise on pp.
    [Show full text]
  • An Evolutionary Approach for Sorting Algorithms
    ORIENTAL JOURNAL OF ISSN: 0974-6471 COMPUTER SCIENCE & TECHNOLOGY December 2014, An International Open Free Access, Peer Reviewed Research Journal Vol. 7, No. (3): Published By: Oriental Scientific Publishing Co., India. Pgs. 369-376 www.computerscijournal.org Root to Fruit (2): An Evolutionary Approach for Sorting Algorithms PRAMOD KADAM AND Sachin KADAM BVDU, IMED, Pune, India. (Received: November 10, 2014; Accepted: December 20, 2014) ABstract This paper continues the earlier thought of evolutionary study of sorting problem and sorting algorithms (Root to Fruit (1): An Evolutionary Study of Sorting Problem) [1]and concluded with the chronological list of early pioneers of sorting problem or algorithms. Latter in the study graphical method has been used to present an evolution of sorting problem and sorting algorithm on the time line. Key words: Evolutionary study of sorting, History of sorting Early Sorting algorithms, list of inventors for sorting. IntroDUCTION name and their contribution may skipped from the study. Therefore readers have all the rights to In spite of plentiful literature and research extent this study with the valid proofs. Ultimately in sorting algorithmic domain there is mess our objective behind this research is very much found in documentation as far as credential clear, that to provide strength to the evolutionary concern2. Perhaps this problem found due to lack study of sorting algorithms and shift towards a good of coordination and unavailability of common knowledge base to preserve work of our forebear platform or knowledge base in the same domain. for upcoming generation. Otherwise coming Evolutionary study of sorting algorithm or sorting generation could receive hardly information about problem is foundation of futuristic knowledge sorting problems and syllabi may restrict with some base for sorting problem domain1.
    [Show full text]
  • CS 106B Lecture 11: Sorting Friday, October 21, 2016
    CS 106B Lecture 11: Sorting Friday, October 21, 2016 Programming Abstractions Fall 2016 Stanford University Computer Science Department Lecturer: Chris Gregg reading: Programming Abstractions in C++, Section 10.2 Today's Topics •Logistics •We will have a midterm review, TBA •Midterm materials (old exams, study guides, etc.) will come out next week. •Throwing a string error •Recursive != exponential computational complexity •Sorting •Insertion Sort •Selection Sort •Merge Sort •Quicksort •Other sorts you might want to look at: •Radix Sort •Shell Sort •Tim Sort •Heap Sort (we will cover heaps later in the course) •Bogosort Throwing an Exception • For the Serpinski Triangle option in MetaAcademy assignment says, "If the order passed is negative, your function should throw a string exception." • What does it mean to "throw a string exception?" • An "exception" is your program's way of pulling the fire alarm — something drastic happened, and your program does not like it. In fact, if an exception is not "handled" by the rest of your program, it crashes! It is not a particularly graceful way to handle bad input from the user. • If you were going to use your Serpinski function in a program you wrote, you would want to check the input before calling the function — in other words, make sure your program never creates a situation where a function needs to throw an exception. Throwing an Exception • To throw an exception: throw("Illegal level: Serpinski level must be non-negative."); • This will crash the program. • You can "catch" exceptions that have been thrown by other functions, but that is beyond our scope — see here for details: https://www.tutorialspoint.com/ cplusplus/cpp_exceptions_handling.htm (that is a creepy hand) Recursion != Exponential Computational Complexity • In the previous lecture, we discussed the recursive fibonacci function: long fibonacci(int n) { • This function happens to have if (n == 0) { return 0; exponential computational complexity } if (n == 1) { because each recursive call has two return 1; } additional recursions.
    [Show full text]
  • Parallel Sorting Algorithms + Topic Overview
    + Design of Parallel Algorithms Parallel Sorting Algorithms + Topic Overview n Issues in Sorting on Parallel Computers n Sorting Networks n Bubble Sort and its Variants n Quicksort n Bucket and Sample Sort n Other Sorting Algorithms + Sorting: Overview n One of the most commonly used and well-studied kernels. n Sorting can be comparison-based or noncomparison-based. n The fundamental operation of comparison-based sorting is compare-exchange. n The lower bound on any comparison-based sort of n numbers is Θ(nlog n) . n We focus here on comparison-based sorting algorithms. + Sorting: Basics What is a parallel sorted sequence? Where are the input and output lists stored? n We assume that the input and output lists are distributed. n The sorted list is partitioned with the property that each partitioned list is sorted and each element in processor Pi's list is less than that in Pj's list if i < j. + Sorting: Parallel Compare Exchange Operation A parallel compare-exchange operation. Processes Pi and Pj send their elements to each other. Process Pi keeps min{ai,aj}, and Pj keeps max{ai, aj}. + Sorting: Basics What is the parallel counterpart to a sequential comparator? n If each processor has one element, the compare exchange operation stores the smaller element at the processor with smaller id. This can be done in ts + tw time. n If we have more than one element per processor, we call this operation a compare split. Assume each of two processors have n/p elements. n After the compare-split operation, the smaller n/p elements are at processor Pi and the larger n/p elements at Pj, where i < j.
    [Show full text]
  • Investigating the Effect of Implementation Languages and Large Problem Sizes on the Tractability and Efficiency of Sorting Algorithms
    International Journal of Engineering Research and Technology. ISSN 0974-3154, Volume 12, Number 2 (2019), pp. 196-203 © International Research Publication House. http://www.irphouse.com Investigating the Effect of Implementation Languages and Large Problem Sizes on the Tractability and Efficiency of Sorting Algorithms Temitayo Matthew Fagbola and Surendra Colin Thakur Department of Information Technology, Durban University of Technology, Durban 4000, South Africa. ORCID: 0000-0001-6631-1002 (Temitayo Fagbola) Abstract [1],[2]. Theoretically, effective sorting of data allows for an efficient and simple searching process to take place. This is Sorting is a data structure operation involving a re-arrangement particularly important as most merge and search algorithms of an unordered set of elements with witnessed real life strictly depend on the correctness and efficiency of sorting applications for load balancing and energy conservation in algorithms [4]. It is important to note that, the rearrangement distributed, grid and cloud computing environments. However, procedure of each sorting algorithm differs and directly impacts the rearrangement procedure often used by sorting algorithms on the execution time and complexity of such algorithm for differs and significantly impacts on their computational varying problem sizes and type emanating from real-world efficiencies and tractability for varying problem sizes. situations [5]. For instance, the operational sorting procedures Currently, which combination of sorting algorithm and of Merge Sort, Quick Sort and Heap Sort follow a divide-and- implementation language is highly tractable and efficient for conquer approach characterized by key comparison, recursion solving large sized-problems remains an open challenge. In this and binary heap’ key reordering requirements, respectively [9].
    [Show full text]
  • Sorting in Linear Time
    Data Structures Sorting in Linear Time 1 Sorting • Internal (external) – All data are held in primary memory during the sorting process. • Comparison Based – Based on pairwise comparisons. – Lower bound on running time is Ω(nlogn). • In Place – Requires very little, O(log n), additional space. • Stable – Preserves the relative ordering of items with equal values. 2 Lower Bounds for Comparison Sorts • Ω(n) to examine all the input. • All sorts seen so far are Ω(n lg n). • We’ll show that Ω(n lg n) is a lower bound for comparison sorts. 3 Lower Bounds for Comparison Sorts • All possible flows of any comparison sort can be modeled by a decision tree. • For example, the decision tree of insertion sort of 3 elements looks like: • There are at least n! leaves, because every permutation appears at least once. 4 Lower Bounds for Comparison Sorts • Theorem: – Any decision tree that sorts n elements has height Ω(n lg n). • Proof: – The number of leaves l ≥ n! – Any binary tree of height h has ≤ 2h leaves. – Hence, n! ≤ l ≤ 2h – Take logs: h ≥ lg(n!) – Use Stirling’s approximation: n! > (n/e)n – We get: 5 Lower Bounds for Comparison Sorts • Lemma: – Any binary tree of height h has ≤ 2h leaves. • Proof: – By induction on h. – Basis: • h = 0. • Tree is just one node, which is a leaf. • 2h = 1. – Inductive step: • Assume true for height = h − 1. • Reduce all leaves and get a tree of height h – 1 • Make the tree full • Then, extend the tree of height h − 1 by adding to each leaf two son leaves.
    [Show full text]
  • Foundations of Differentially Oblivious Algorithms
    Foundations of Differentially Oblivious Algorithms T-H. Hubert Chan Kai-Min Chung Bruce Maggs Elaine Shi August 5, 2020 Abstract It is well-known that a program's memory access pattern can leak information about its input. To thwart such leakage, most existing works adopt the technique of oblivious RAM (ORAM) simulation. Such an obliviousness notion has stimulated much debate. Although ORAM techniques have significantly improved over the past few years, the concrete overheads are arguably still undesirable for real-world systems | part of this overhead is in fact inherent due to a well-known logarithmic ORAM lower bound by Goldreich and Ostrovsky. To make matters worse, when the program's runtime or output length depend on secret inputs, it may be necessary to perform worst-case padding to achieve full obliviousness and thus incur possibly super-linear overheads. Inspired by the elegant notion of differential privacy, we initiate the study of a new notion of access pattern privacy, which we call \(, δ)-differential obliviousness". We separate the notion of (, δ)-differential obliviousness from classical obliviousness by considering several fundamental algorithmic abstractions including sorting small-length keys, merging two sorted lists, and range query data structures (akin to binary search trees). We show that by adopting differential obliv- iousness with reasonable choices of and δ, not only can one circumvent several impossibilities pertaining to full obliviousness, one can also, in several cases, obtain meaningful privacy with little overhead relative to the non-private baselines (i.e., having privacy \almost for free"). On the other hand, we show that for very demanding choices of and δ, the same lower bounds for oblivious algorithms would be preserved for (, δ)-differential obliviousness.
    [Show full text]
  • Lecture 8.Key
    CSC 391/691: GPU Programming Fall 2015 Parallel Sorting Algorithms Copyright © 2015 Samuel S. Cho Sorting Algorithms Review 2 • Bubble Sort: O(n ) 2 • Insertion Sort: O(n ) • Quick Sort: O(n log n) • Heap Sort: O(n log n) • Merge Sort: O(n log n) • The best we can expect from a sequential sorting algorithm using p processors (if distributed evenly among the n elements to be sorted) is O(n log n) / p ~ O(log n). Compare and Exchange Sorting Algorithms • Form the basis of several, if not most, classical sequential sorting algorithms. • Two numbers, say A and B, are compared between P0 and P1. P0 P1 A B MIN MAX Bubble Sort • Generic example of a “bad” sorting 0 1 2 3 4 5 algorithm. start: 1 3 8 0 6 5 0 1 2 3 4 5 Algorithm: • after pass 1: 1 3 0 6 5 8 • Compare neighboring elements. • Swap if neighbor is out of order. 0 1 2 3 4 5 • Two nested loops. after pass 2: 1 0 3 5 6 8 • Stop when a whole pass 0 1 2 3 4 5 completes without any swaps. after pass 3: 0 1 3 5 6 8 0 1 2 3 4 5 • Performance: 2 after pass 4: 0 1 3 5 6 8 Worst: O(n ) • 2 • Average: O(n ) fin. • Best: O(n) "The bubble sort seems to have nothing to recommend it, except a catchy name and the fact that it leads to some interesting theoretical problems." - Donald Knuth, The Art of Computer Programming Odd-Even Transposition Sort (also Brick Sort) • Simple sorting algorithm that was introduced in 1972 by Nico Habermann who originally developed it for parallel architectures (“Parallel Neighbor-Sort”).
    [Show full text]
  • Sorting Algorithm 1 Sorting Algorithm
    Sorting algorithm 1 Sorting algorithm In computer science, a sorting algorithm is an algorithm that puts elements of a list in a certain order. The most-used orders are numerical order and lexicographical order. Efficient sorting is important for optimizing the use of other algorithms (such as search and merge algorithms) that require sorted lists to work correctly; it is also often useful for canonicalizing data and for producing human-readable output. More formally, the output must satisfy two conditions: 1. The output is in nondecreasing order (each element is no smaller than the previous element according to the desired total order); 2. The output is a permutation, or reordering, of the input. Since the dawn of computing, the sorting problem has attracted a great deal of research, perhaps due to the complexity of solving it efficiently despite its simple, familiar statement. For example, bubble sort was analyzed as early as 1956.[1] Although many consider it a solved problem, useful new sorting algorithms are still being invented (for example, library sort was first published in 2004). Sorting algorithms are prevalent in introductory computer science classes, where the abundance of algorithms for the problem provides a gentle introduction to a variety of core algorithm concepts, such as big O notation, divide and conquer algorithms, data structures, randomized algorithms, best, worst and average case analysis, time-space tradeoffs, and lower bounds. Classification Sorting algorithms used in computer science are often classified by: • Computational complexity (worst, average and best behaviour) of element comparisons in terms of the size of the list . For typical sorting algorithms good behavior is and bad behavior is .
    [Show full text]
  • An Ordering Experiment A
    Journal of Economic Behavior & Organization Vol. 50 (2003) 249–262 An ordering experiment A. Norman∗, M. Ahmed, J. Chou, K. Fortson, C. Kurz, H. Lee, L. Linden, K. Meythaler, R. Rando, K. Sheppard, N. Tantzen, I. White, M. Ziegler Department of Economics, The University of Texas at Austin, Austin, TX 78712-1173, USA Received 12 December 2000; accepted 20 April 2001 Abstract Binary comparison operators form the basis of consumer set theory. If humans could only per- form binary comparisons, the most efficient procedure a human might employ to make a complete n n n preference ordering of items would be a log2 algorithm. But, if humans are capable of assigning each item an ordinal utility value, they are capable of implementing a more efficient linear algo- rithm. In this paper, we consider six incentive systems for ordering three different sets of objects: pens, notebooks, and Hot Wheels. All experimental evidence indicates that humans are capable of implementing a linear algorithm, for small sets. © 2003 Elsevier Science B.V. All rights reserved. JEL classification: C9 Design of Experiments; C91 Laboratory, Individual Behavior; D11 Consumer Economics: Theory; C61 Optimization Techniques; Programming Models; C63 Computational Techniques; C69 Other-Complexity Theory Keywords: Linear algorithm; Binary comparison; Ordering 1. Introduction We experimentally examine the algorithms that individuals use to order sets of objects. Our focus is not the static properties of the ordered objects, but rather the properties of the algorithms that humans use to make the ordering. By comparing human algorithms with known computer ordering algorithms, we can determine their properties. We use complex- ity theory to measure cost and to formulate hypotheses to test among alternative human algorithms.
    [Show full text]
  • Integer Sorting in O ( N //Spl Root/Log Log N/ ) Expected Time and Linear Space
    p (n log log n) Integer Sorting in O Expected Time and Linear Space Yijie Han Mikkel Thorup School of Interdisciplinary Computing and Engineering AT&T Labs— Research University of Missouri at Kansas City Shannon Laboratory 5100 Rockhill Road 180 Park Avenue Kansas City, MO 64110 Florham Park, NJ 07932 [email protected] [email protected] http://welcome.to/yijiehan Abstract of the input integers. The assumption that each integer fits in a machine word implies that integers can be operated on We present a randomized algorithm sorting n integers with single instructions. A similar assumption is made for p (n log log n) O (n log n) in O expected time and linear space. This comparison based sorting in that an time bound (n log log n) improves the previous O bound by Anderson et requires constant time comparisons. However, for integer al. from STOC’95. sorting, besides comparisons, we can use all the other in- As an immediate consequence, if the integers are structions available on integers in standard imperative pro- p O (n log log U ) bounded by U , we can sort them in gramming languages such as C [26]. It is important that the expected time. This is the first improvement over the word-size W is finite, for otherwise, we can sort in linear (n log log U ) O bound obtained with van Emde Boas’ data time by a clever coding of a huge vector-processor dealing structure from FOCS’75. with n input integers at the time [30, 27]. At the heart of our construction, is a technical determin- Concretely, Fredman and Willard [17] showed that we n (n log n= log log n) istic lemma of independent interest; namely, that we split can sort deterministically in O time and p p n (n log n) integers into subsets of size at most in linear time and linear space and randomized in O expected time space.
    [Show full text]
  • Practice Quiz 1 Solutions
    Introduction to Algorithms October 2, 2001 Massachusetts Institute of Technology 6.046J/18.410J Singapore-MIT Alliance SMA5503 Professors Professors Erik Demaine, Lee Wee Sun, and Charles E. Leiserson Handout 16 Practice Quiz 1 Solutions Do not open this quiz booklet until you are directed to do so. This quiz starts at 2:35 P.M. and ends at 3:55 P.M. It contains 3 problems, some with multiple parts. The quiz contains 13 pages, including this one. You have 80 minutes to earn 100 points. ¡£¢ ¤¦¥ ¥¨§ © © ¥ This quiz is closed book. You may use one handwritten ¥ crib sheet. No calculators are permitted. When the quiz begins, write your name on every page of this quiz booklet in the space provided. Write your solutions in the space provided. If you need more space, write on the back of the sheet containing the problem. Do not put part of the answer to one problem on the back of the sheet for another problem, since the pages will be separated for grading. Do not spend too much time on any problem. Read them all through first and attack them in the order that allows you to make the most progress. Show your work, as partial credit will be given. You will be graded not only on the correct- ness of your answer, but also on the clarity with which you express it. Be neat. Good luck! Handout 16: Practice Quiz 1 Solutions 2 Problem 1. Integer Multiplication [15 points] The following algorithm multiplies two nonnegative integers and : MULT 1 2 while © 3 do if ¨ "! %$& 4 then # '( *) !,+ 5 !.
    [Show full text]