Presentation is loading. Please wait.

Presentation is loading. Please wait.

CIT 594 28-Nov-18.

Similar presentations


Presentation on theme: "CIT 594 28-Nov-18."— Presentation transcript:

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


Download ppt "CIT 594 28-Nov-18."

Similar presentations


Ads by Google