CLRS 9.1 Minimum and maximum | Rip's Infernal Majesty



CLRS 9.1 Minimum and maximum | Rip's Infernal Majesty

9.1-1
Show that the second smallest of n elements can be found with n + ⌈lg n⌉ – 2 comparisons in the worst case. (Hint: Also find the smallest element.)

We can borrow idea from heap sort. Build a min-heap of these n elements, which always takes less than n comparisons. Then we extract the root from heap which is the smallest element we want. After that we call HEAPIFY once, which takes ⌈lg n – 1⌉ comparisons at worst. Now we can extract the new root which is the second smallest element. In total this takes n + ⌈lg n⌉ – 2 comparisons at most.

9.1-2: ⋆
Show that ⌈3n/2⌉ – 2 comparisons are necessary in the worst case to find both the maximum and minimum of n numbers. (Hint: Consider how many numbers are potentially either the maximum or minimum, and investigate how a comparison affects these counts.)

Compare numbers in pairs. The smaller of subsequent pair is compared to the current min, and the larger to the current max. Thus there are 3 comparisons for each pair, except the first pair taking only one comparison. It results in total ⌈3n/2-2⌉ comparisons.


Read full article from CLRS 9.1 Minimum and maximum | Rip's Infernal Majesty


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts