經(jīng)典原版書庫(kù)·數(shù)據(jù)結(jié)構(gòu)與算法分析:Java語(yǔ)言描述(英文版·第3版)
定 價(jià):79 元
叢書名:經(jīng)典原版書庫(kù)
- 作者:(美),Mark Allen Weiss 著
- 出版時(shí)間:2013/2/1
- ISBN:9787111412366
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.12
- 頁(yè)碼:614
- 紙張:膠版紙
- 版次:1
- 開本:16開
《經(jīng)典原版書庫(kù)·數(shù)據(jù)結(jié)構(gòu)與算法分析:Java語(yǔ)言描述(英文版·第3版)》是國(guó)外數(shù)據(jù)結(jié)構(gòu)與算法分析方面的經(jīng)典教材,使用卓越的Java編程語(yǔ)言作為實(shí)現(xiàn)工具討論了數(shù)據(jù)結(jié)構(gòu)(組織大量數(shù)據(jù)的方法)和算法分析(對(duì)算法運(yùn)行時(shí)間的估計(jì))。
隨著計(jì)算機(jī)速度的不斷增加和功能的日益強(qiáng)大,人們對(duì)有效編程和算法分析的要求也不斷增長(zhǎng)!督(jīng)典原版書庫(kù)·數(shù)據(jù)結(jié)構(gòu)與算法分析:Java語(yǔ)言描述(英文版·第3版)》將算法分析與最有效率的Java程序的開發(fā)有機(jī)地結(jié)合起來(lái),深入分析每種算法,并細(xì)致講解精心構(gòu)造程序的方法,內(nèi)容全面、縝密嚴(yán)格。
Mark Allen Weiss,佛羅里達(dá)國(guó)際大學(xué)計(jì)算與信息科學(xué)學(xué)院教授、副院長(zhǎng),本科教育主任和研究生教育主任。他于1987年獲得普林斯頓大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位,師從BobSedgewick。他曾經(jīng)擔(dān)任全美AP(Advanced Placement)考試計(jì)算機(jī)學(xué)科委員會(huì)的主席(2000-2004)。他的主要研究興趣是數(shù)據(jù)結(jié)構(gòu)、算法和教育學(xué)。
Preface
Chapter 1 Introduction
1.1 What's the Book About?
1.2 Mathematics Review
1.2.1 Exponents
1.2.2 Logarichms
1.2.3 Series
1.2.4 Modular Arithmetic
1.2.5 The P Word
1.3 A Brief Inroduction to Recursion
1.4 Implementing Generic Components Pre-Java
1.4.1 Using Object for Genericicy
1.4.2 Wrappers for Primitive Types
1.4.3 Usinglnterface Types for Genericity
1.4.4 Compatibility of Array Types
1.5 Implementing Generic Components Usingjava 5 Generics
1.5.1 Simple Generic Classes and Interfaces
1.5.2 Autoboxing/Unboxing
1.5.3 TheDiamond Operator
1.5.4 Wildcardswith Bounds
1.5.5 Generic Static Methods
1.5.6 Type Bounds
1.5.7 TypeErasure
1.5.8 Restrictions onGenerics
1.6 Function Objects
Summary
Exercises
References
Chapter 2 Algorithm Analysis
2.1 MathematicalBackground
2.2 Model
2.3 What to Analyze
2.4 Running Time Calculations
2.4.1 A Simple Example
2.4.2 General Rules
2.4.3 Solutions for the Maximum Subsequence Sum Problem
2.4.4 Logamhms in the RunningTime
2.4.5 A Grain of Salt
Summary
Exercises
References
Chapter 3 Lists,Stacks,and Queues
3.1 Abstract Data Types (ADTs)
3.2 The List ADT
3.2.1 Simple Array Implementation of Lists
3.2.2 Simple Linked Lists
3.3 Listsin the java Collections API
3.3.1 Collectionlnterfac
3.3.2 Iterator
3.3.3 The List Interface, ArrayList, and LinkedList
3.3.4 Example:UsingremoveonaLinkedList
3.3.5 Listlterators
3.4 Implementation of ArrayList
3.4.1 The Basic Class
3.4.2 The Iterator and Java.Nested and Inner Classes
3.5 Implementation of LinkedList
3.6 The StackADT
3.6.1 Stack Model
……
Chapter 4 Trees
Chapter 5 Hashing
Chapter 6 Priority Queues(Heaps)
Chapter 7 Sorting
Chapter 8 The Disjoint Set Class
Chapter 9 Graph Algorithms
Chapter 10 Algorithm Desing Techniques
Chapter 11 Amortized Analysis
Chapter 12 Advanced Data Sturctures and Implementation
Index
Suppose you have a group of N numbers and would like to determine the thh largest. This is known as the selection problem. Most studencs who have had a programming course or two would have no difficulty writing a program Co solve t.his problem. There are quite a few "obvious" solutions.
One way to solve this problem would be to read the N numbers into an array, sort the array in decreasing order by some simple algorithm such as bubblesort, and then return the elemem in poskion k.
A somewhat better algorithm might be to read the first k elements into an array and sort them (in decreasing order). Next, each remaining element is read one by one. As a new element arrives, it is ignored ifit is smaller than the kth element in the array. Otherwise, it is placed in its correct spot in the array, bumping one element out of the array. When the algPo'ithm ends, the element.in the kth position is ret.urned as the answer.
Both algorit.hms are simple to code, and you are encouraged to do so. The natural questions, then, are which algorithm is better and, more important, is either algorithm good enough? A simulation using a random file of 30 million elements and k = l5,000,000 will show that neither algorithm finishes in a reasonable amount of time; each requiresseveral days of compurer processing to cerminate (albeic eventually with a correct answer).An alternative met.hod, discussed in Chapt.er 7, gives a solution in about a second. Thus,although our proposed algorithms work, they cannot be considered good algorithms,because they are entirely impractical for input sizes that a third algorithm can handle in areasonable amount of rime.
……