Download presentation
Presentation is loading. Please wait.
1
CIT 594 28-Nov-18
2
Basic content CIT 594 is a continuation of CIT 591
Java will be used throughout However, CIT 594 is not primarily a course about Java Topics: Data Structures Supplied by Java How to create your own Algorithms A sampling of some better-known algorithms Analysis of algorithms Simple algebra is required
3
Types of Collection A collection is a structured group of objects
Java supplies several types of Collection: Set: cannot contain duplicate elements, order is not important SortedSet: like a Set, but order is important List: may contain duplicate elements, order is important Java also supplies some “collection-like” things: Map: a “dictionary” that associates keys with values, order is not important SortedMap: like a Map, but order is important
4
The Collections hierarchy
5
Uniformity through interfaces
Much of the elegance of the Collections Framework arises from the intelligent use of interfaces For example, the Collection interface specifies (among many other operations): boolean add(Object o) boolean isEmpty() boolean remove() int size() Object[] toArray() Iterator iterator()
6
Creating lists in Java 44 97 23 17 myList:
class Cell { int value; Cell next; Cell (int v, Cell n) { // constructor value = v; next = n; } } Cell temp = new Cell(17, null); temp = new Cell(23, temp); temp = new Cell(97, temp); Cell myList = new Cell(44, temp);
7
A short list of categories
Algorithm types we will consider include: Simple recursive algorithms Backtracking algorithms Divide and conquer algorithms Dynamic programming algorithms Greedy algorithms Branch and bound algorithms Brute force algorithms Randomized algorithms
8
Example recursive algorithms
To count the number of elements in a list: If the list is empty, return zero; otherwise, Step past the first element, and count the remaining elements in the list Add one to the result To test if a value occurs in a list: If the list is empty, return false; otherwise, If the first thing in the list is the given value, return true; otherwise Step past the first element, and test whether the value occurs in the remainder of the list
9
Example backtracking algorithm
To color a map with no more than four colors: color(Country n): If all countries have been colored (n > number of countries) return success; otherwise, For each color c of four colors, If country n is not adjacent to a country that has been colored c Color country n with color c recursively color country n+1 If successful, return success If loop exits, return failure
10
Example greedy algorithm
Suppose you want to count out a certain amount of money, using the fewest possible bills and coins A greedy algorithm would do this would be: At each step, take the largest possible bill or coin that does not overshoot Example: To make $6.39, you can choose: a $5 bill a $1 bill, to make $6 a 25¢ coin, to make $6.25 A 10¢ coin, to make $6.35 four 1¢ coins, to make $6.39 For US money, the greedy algorithm always gives the optimum solution 3
11
Time and space To analyze an algorithm means:
developing a formula for predicting how fast an algorithm is, based on the size of the input (time complexity), and/or developing a formula for predicting how much memory an algorithm requires, based on the size of the input (space complexity) Usually time is our biggest concern Most algorithms require a fixed amount of space
12
y = x2 + 3x + 5, for x=1..20
13
The End
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.