Algorithm Time Analysis Examples
This document presents examples of linear search algorithms and substring finding techniques, highlighting their implementations in Java. It dives into the functionalities of search and removal operations in data structures, examining the time complexity of linear searches and providing potential improvements. Additionally, it explores the challenges of removing elements from lists and suggests efficient solutions. Key algorithmic concepts like boolean searches, handling null inputs, and pattern matching string searches are discussed thoroughly to enhance understanding of algorithm performance.
Algorithm Time Analysis Examples
E N D
Presentation Transcript
Algorithm Time Analysis Examples Salim Malakouti
Linear Search • public int count(int[] array, int item) { • for (inti = 0; i < array.length; i++) { • if (array[i] == item) • returntrue; • } • returncount; • }
Remove from the list? • public void remove(ArrayList<Integer> list,Integer item){ • for (int i = 0; i < list.size(); i++) { • if(list.get(i).equals(item)){ • list.remove(i); • } • } • }
Removing from a list What is a better solution? What is its time complexity?
Finding A substring • String source = “I hope you are not tired. home” • String pattern = “home” • Exists? • What is the algorithm?
Finding sub pattern • public booleanfindSubString(String source, String pattern){ • if(pattern==null||source==null) • return false; • if(pattern.length()==0||source.length()==0) • return false; • for (inti = 0; i < source.length(); i++) { • if(source.charAt(i)==pattern.charAt(i)){ • boolean t=true; • for (int j = i; j < pattern.length(); j++) { • if(source.charAt(j)!=pattern.charAt(j-i)){ • t=false; • break; • } • } • if(t) • return true; • } • } • return false; • }