0% found this document useful (0 votes)
18 views

Algorithms 2

The document discusses various algorithms including sum, linear search, binary search, bubble sort, and insertion sort. It provides pseudocode to calculate the sum of a list of integers. It also compares linear and binary search algorithms, explaining that binary search is more efficient by eliminating half of the remaining list at each step. The document concludes by introducing concepts of algorithm efficiency and order-of-growth analysis.

Uploaded by

Tanzeel Khan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Algorithms 2

The document discusses various algorithms including sum, linear search, binary search, bubble sort, and insertion sort. It provides pseudocode to calculate the sum of a list of integers. It also compares linear and binary search algorithms, explaining that binary search is more efficient by eliminating half of the remaining list at each step. The document concludes by introducing concepts of algorithm efficiency and order-of-growth analysis.

Uploaded by

Tanzeel Khan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Algorithms

 Previously…
 Characteristics of algorithms
 Pseudocode
 Examples: Max algorithm
 Today…
 Examples: Sum algorithm
 Problem of searching an ordered list
Linear search & binary search
algorithms
 Sorting problem
 Bubble sort & insertion sort algorithms
Practice Exercises
 Devise an algorithm that finds the sum of all
the integers in a list.

 procedure sum(a1, a2, …, an: integers)


s := 0 {sum of elements so far}
for i := 1 to n {go thru all
elements}
s := s + ai {add
current item}
{now s is the sum of all items}
Searching Algorithms
 Problem of searching an ordered list.
 Given a list L of n elements that are
sorted into a definite order (e.g., numeric,
alphabetical),
 And given a particular element x,
 Determine whether x appears in the list,
 And if so, return its index (position) in the
list.
 Problem occurs often in many contexts.

 Let’s find an efficient algorithm!


Linear Search (Naïve)
{Given a list of integers and an integer x to look up,
returns the index of x within the list or 0 if x is not in the list}
Binary Search
 Basic idea: At each step, look at the middle
element of the remaining list to eliminate half
of it, and quickly zero in on the desired
element.

x x x x
Search Alg. #2: Binary Search
Search Example
 Search for 19 in the
Index: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 list
1, 2, 3, 5, 6, 7, 8, 10, 12, 13, 15, 16, 18, 19, 20, 22
i using linear search i

i j j

 using binary search i


 Entering while loop: i = 1, j = 16
 m = (i+j)/2 = (1+16)/2 = 8.5 = 8, i = 9, j =
 m = (i+j)/2 = (9+16)/2 = 12.5 = 12, i =1613, j =

 m = (i+j)/2 = (13+16)/2 = 14.5 = 14, 16


i = 13, j =
 m = (i+j)/2 = (13+14)/2 = 13.5 = 13, 14
i = 14, j =
 Exit loop 14
Sorting Algorithms

 Sorting is common in many applications.


 E.g. spreadsheets and databases

 We can search quickly when data is odrered!


 Sorting is also widely used as a subroutine in other data-processing algorithms.
 Two sorting algorithms :

 Bubble sort However, these are not


very efficient, and you should
 Insertion sort
not use them on large data sets!
We’ll see some more efficient algorithms later in the course.
Bubble Sort
 Smaller elements “float” up to the top of the list, like bubbles in
a container of liquid, and the larger elements “sink” to the
bottom.
 Example: Use the bubble sort to put 3, 2, 4, 1, 5 into
increasing order.
Bubble Sort Algorithm
Insertion Sort
 English description of algorithm:
 Start with the second
element, for each item in the
input list:
 “Insert” it into the correct place in the sorted output

list generated so far. Like so:


 Find the location where the new item should be
inserted using linear or binary search.
 Then, shift the items from that position
onwards up by one position.
 Put the new item in the remaining hole.
Insertion Sort Example
 Use the insertion sort to put 3, 2, 4, 1, 5 into increasing order
 Insert the 2nd element 2 in the right position:

3  2  put 2 in front of 3.  2, 3, 4, 1, 5


 Insert the 3rd element 4 in the right position:
4  2  do nothing. Move to the next
comparison.
 4  3  do nothing. Done.  2, 3, 4, 1, 5
 Insert the 4th element 1 in the right position:
 2  1  put 1 in front of 2.  1, 2, 3, 4, 5
 Insert the 5th element 5 in the right position:
 5  1  do nothing. Move to the next

comparison.
5  2  do nothing. Move to the next
comparison.
 5  3  do nothing. Move to the next
Insertion Sort Algorithm
Efficiency of Algorithms
 Intuitively we see that binary search is much
faster than linear search,
 Also, we may see that insertion sort is better
than bubblesort in some cases (why?
when?),
 But how do we analyze the efficiency of
algorithms formally?
 Use methods of algorithmic complexity,
which utilize the order-of-growth

You might also like