|
|
| Mastering Algorithms With C (ISBN: 1565924533) |
 |
List Price: $39.95
Our Price: $27.97
Used Price: $19.49
Release Date: September, 1999
Manufacturer: O'Reilly & Associates (Paperback)
Sales Rank: 7,630
Author: Kyle Loudon
|
Buy This Book
|
|
Average Customer Review:    
| pretty concise and covers enough ground |     | Sure, we all have learnt algorithms back in school. We know the fundamentals, we can talk about them, no sweat. But when it comes the time to actually write out an algorithm in C, we all struggle like George W writing SAT. That's why an algorithm book with real useable sample codes is very useful. O'Reilly has a good reputation for pumping out reference books, but there are, inevitably, hits and misses in the series. This volume is a hit. It covers most frequently used everyday algorithms without going into some obscure and generally useless NP-class problems. Full example codes are given on a floopy for easy porting.
This is truly a wonderful book, consisting recommendations of implementation on most of the basic and common algorithms. The book is shaped to be useful both for developers with little experience in C programming and also for professionals wanting to learn some more, and maybe make their programs run faster and with greater stability. Possibly more than anything this book taught me how to get much better memory consumption and smaller code using small yet very intelegently designed functions.I believe that reading and tryng some of the many examples in this book for your programming needs, would change the way you think in programming, in a way that you would automatically make much more efficiant programs no matter if you write them in C, in C++, in Java, in Perl or any such language for that matter. Recommended for people that think there might be someting they could improve in their programming especially in C. : )
| Helpful book on algorithms using C |     | C programming is still with us because of its high performance ability and this book outlines several algorithms using the language. It begins with a classification of algorithms as randomized, divide-and-conquer, dynamic programming, greedy and approximation. Some algorithms the author states defy classiification but he does not give examples. Pointers are discussed in the next chapter, and covers how to avoid dangling pointers, memory allocation, pointers to data structures, function parameters, double pointers, and generic and function pointers. The chapter is clearly written and diagrams are used frequently to illustrate the uses and properties of pointers. The author in particular gives an excellent explanation of how C can simulate call-by-reference parameter passing. This capability in C can be a source of trouble to the newcomer to C. The author does not however discuss triple pointers in this chapter, in spite of their great utility in computational geometry and computational radiology. Void pointers and casting are discussed in detail though, and the author does a good job. Only a cursory discussion of function pointers is given; I would have preferred many more examples to be given. Recursion and tail-recursion are discussed in Chapter 3, with the factorial function used to illustrate the differences. Computational complexity and the O-notation are covered in the next chapter, with the treatment pretty sparse but clear. Linked lists, extremely useful in all areas of engineering and science, are discussed effectively in Chapter 5. Eleven linked list macross, thirteen doubly linked list macros, and eight circular list macros are discussed and the complexity of each given. Virtual memory and paging are given as examples of applications of linked lists. The author moves on to stacks in the next chapter with several stack macros outlined. FIFO queues are discussed but in view of their importance in network modeling not enough examples are given. A very interesting overview of how to implement sets as a data type in C is given in Chapter 7. I was not aware that such a construction could be done effectively in C so this chapter was of particular interest to me. All of the usual set operations are implemented using a number of diffrent macros. A clever set covering algorithm is given at the end of the chapter. Hashing and chain hash tables as arrays of linked lists are outlined in the next chapter. Hash functions are used heavily in such areas as cryptography and the author does a fine job of outlining their implementation. After a good discussion of trees, heaps, priority queues, and graphs, the author begins in the third part of the book with the actual implementationof many useful algorithms. The chapter on numerical methods could be more in depth because of its immmense importance and because C has been one of the best performers for the the time intensive calculations in this area. Huffman encoding and other compression algorithms are also treated with some detail. Several macros for bit operations are given and the ones discussed are helpful for the next chapter on encryption algorithms. The DES and RSA algorithms are treated in this chapter, but unfortunately elliptic curve encryption algorithms are not. The book ends with a fairly good overview of graph algorithms and algorithms in computatational geometry. This is really a pretty good book and gives a good overview of some very important algorithms, and all within a little over 500 pages. The only major omission was the lack of exercises/problems at the end of each chapter.
|
|
|