際際滷

際際滷Share a Scribd company logo
Insertion & Selection Sort using
priority queues
By  Priyanka Rana
By
PRIYANKA RANA
Priyanka Rana 際際滷s
Implementing a Priority Queue
 With an unsorted list :
 insert()  adds entry at last -> takes O(1)
 removeMin()  requires complete scan -> takes O(n)
 fast insertion and slow removal
4 5 2 3 1
Priyanka Rana 際際滷s
 With a Sorted List:
 Insert()  requires complete scan -> takes O(n)
 removeMin()  always access the first element -> takes O(1)
 fast removal and slow insertions.
1 2 3 4 5
Priyanka Rana 際際滷s
Method Unsorted List Sorted List
size, isEmpty O(1) O(1)
insert O(1) O(n)
Min, removeMin O(n) O(1)
Priyanka Rana 際際滷s
Sorting using priority Queues
 Selection  Sort
 Insertion - Sort
Priyanka Rana 際際滷s
Selection Sort  7 4 8 2 5 3 9
7 4 8 2 5 3 9
2 4 8 7 5 3 9
2 3 8 7 5 4 9
2 3 4 7 5 8 9
2 3 4 5 7 8 9
2 3 4 5 7 8 9
2 3 4 5 7 8 9
Priyanka Rana 際際滷s
Selection- Sorting using priority Queues
Sequence S Priority Queue P
Input (7,4,8,2,5,3,9) ()
Phase 1 (a)
(b)
.
.
.
(g)
(4,8,2,5,3,9)
(8,2,5,3,9)
.
.
.
()
(7)
(7,4)
.
.
.
(7,4,8,2,5,3,9)
Phase 2 (a)
(b)
(c)
(d)
(e)
(f)
(g)
(2)
(2,3)
(2,3,4)
(2,3,4,5)
(2,3,4,5,7)
(2,3,4,5,7,8)
(2,3,4,5,7,8,9)
(7,4,8,2,5,3,9)
(7,4,8,5,9)
(7,8,5,9)
(7,8,9)
(8,9)
(9)
()
Priyanka Rana 際際滷s
Running Time
 First removeMin takes O(n) time
 Second removeMin takes O(n-1) time) and so on
 Till last n operation takes O(1) time
= O(n2)O(n
Priyanka Rana 際際滷s
Insertion Sort  7 4 8 2 5 3 9
7
4 7
4 7 8
2 4 7 8
2 3 4 5 7 8 9
2 3 4 5 7 8
2 4 5 7 8
Priyanka Rana 際際滷s
Insertion -Sorting using priority Queues
Sequence S Priority Queue P
Input (7,4,8,2,5,3,9) ()
Phase 1 (a)
(b)
(c)
(d)
(e)
(f)
(g)
(4,8,2,5,3,9)
(8,2,5,3,9)
(2,5,3,9)
(5,3,9)
(3,9)
(9)
()
(7)
(4,7)
(4,7,8)
(2,4,7,8)
(2,4,5,7,8)
(2,3,4,5,7,8)
(2,3,4,5,7,8,9)
Phase 2 (a)
(b)
.
.
.
(g)
(2)
(2,3)
.
.
.
(2,3,4,5,7,8,9)
(3,4,5,7,8,9)
(4,5,7,8,9)
.
.
.
()
Priyanka Rana 際際滷s
Running Time
 First element -no comparison
 Second element  1 comparison
 Third element  2 comparisons and so on.
= O(n2)O(n
Priyanka Rana 際際滷s
THANK YOU
Priyanka Rana 際際滷s

More Related Content

Insertion & Selection Sort - using Priority Queues

  • 1. Insertion & Selection Sort using priority queues By Priyanka Rana By PRIYANKA RANA Priyanka Rana 際際滷s
  • 2. Implementing a Priority Queue With an unsorted list : insert() adds entry at last -> takes O(1) removeMin() requires complete scan -> takes O(n) fast insertion and slow removal 4 5 2 3 1 Priyanka Rana 際際滷s
  • 3. With a Sorted List: Insert() requires complete scan -> takes O(n) removeMin() always access the first element -> takes O(1) fast removal and slow insertions. 1 2 3 4 5 Priyanka Rana 際際滷s
  • 4. Method Unsorted List Sorted List size, isEmpty O(1) O(1) insert O(1) O(n) Min, removeMin O(n) O(1) Priyanka Rana 際際滷s
  • 5. Sorting using priority Queues Selection Sort Insertion - Sort Priyanka Rana 際際滷s
  • 6. Selection Sort 7 4 8 2 5 3 9 7 4 8 2 5 3 9 2 4 8 7 5 3 9 2 3 8 7 5 4 9 2 3 4 7 5 8 9 2 3 4 5 7 8 9 2 3 4 5 7 8 9 2 3 4 5 7 8 9 Priyanka Rana 際際滷s
  • 7. Selection- Sorting using priority Queues Sequence S Priority Queue P Input (7,4,8,2,5,3,9) () Phase 1 (a) (b) . . . (g) (4,8,2,5,3,9) (8,2,5,3,9) . . . () (7) (7,4) . . . (7,4,8,2,5,3,9) Phase 2 (a) (b) (c) (d) (e) (f) (g) (2) (2,3) (2,3,4) (2,3,4,5) (2,3,4,5,7) (2,3,4,5,7,8) (2,3,4,5,7,8,9) (7,4,8,2,5,3,9) (7,4,8,5,9) (7,8,5,9) (7,8,9) (8,9) (9) () Priyanka Rana 際際滷s
  • 8. Running Time First removeMin takes O(n) time Second removeMin takes O(n-1) time) and so on Till last n operation takes O(1) time = O(n2)O(n Priyanka Rana 際際滷s
  • 9. Insertion Sort 7 4 8 2 5 3 9 7 4 7 4 7 8 2 4 7 8 2 3 4 5 7 8 9 2 3 4 5 7 8 2 4 5 7 8 Priyanka Rana 際際滷s
  • 10. Insertion -Sorting using priority Queues Sequence S Priority Queue P Input (7,4,8,2,5,3,9) () Phase 1 (a) (b) (c) (d) (e) (f) (g) (4,8,2,5,3,9) (8,2,5,3,9) (2,5,3,9) (5,3,9) (3,9) (9) () (7) (4,7) (4,7,8) (2,4,7,8) (2,4,5,7,8) (2,3,4,5,7,8) (2,3,4,5,7,8,9) Phase 2 (a) (b) . . . (g) (2) (2,3) . . . (2,3,4,5,7,8,9) (3,4,5,7,8,9) (4,5,7,8,9) . . . () Priyanka Rana 際際滷s
  • 11. Running Time First element -no comparison Second element 1 comparison Third element 2 comparisons and so on. = O(n2)O(n Priyanka Rana 際際滷s

Editor's Notes

  • #3: In this session we'll learn how to implement a priority queue by storing its entries in a list S , where the list can be sorted or unsorted. for unsorted list, //simple way of performing insert operation is to add the element at the end of list , by executing method addLast().// This implementation of method insert takes O(1) time as inserting entries at the end of list does not take into account the ordering of the keys. To perform removeMin method , we have to inspect all the elements of list to find an entry with minimum k. So it taken O(n) time, where n is the number of entries, or data size.// So thats why implementation with an unsorted list is also called as "fast insertion and slow removal".
  • #4: An alternative implementation of a priority queue is in a sorted list. ,// here insertion requires a complete scan of the list to find the appropriate position to insert the new entry so it takes O(n) time, while// removeMin method just needs to access the first element of the list as that will be the one which is least in the sorted list.and so it takes O(1) times.// it is also called as fast removal and slow insertions,
  • #6: There are basically two most popular techniques for sorting, selection-sort and insertion-sort. Lets talk about each of this one by one.
  • #7: In selection -sort ,// lets Consider we have to sort n numbers stored in array A by 鍖rst 鍖nding the smallest element of A and exchanging it with the element in A[0], the first element. Then 鍖nding the second smallest element of A, and exchanging it with A[1], the second element. Continue in this manner for the 鍖rst n1 elements of A. This method of sorting is known as selection sort.
  • #8: In last session I mentioned about sorting using priority queus, through insert and removeMin() . Lets see how priority queues help in sorting, lets say we have some data in sequence S, and an empty priority queue, // Selection sort occurs in two phases, in first phase we insert all the elements in priority queue P using simple insert() method,// we ll pick first item// from the sequence insert into P,then second element// , third and so on, this way we have complete data in prority queue now, now in Phase 2 //we repeatedly remove the elements from P using the removeMin() method. we ll find the least element in the qyueue, and put it back in sequence S, // //, we ll do this till the last element in priority queue , when all the elements of queue are moved to sequence S in order. In this whole process bottleneck is in phase 2, where we repeatedly remove an entry with smallest key from Queue P. We start with priority queue size equals n and incrementally decreases with each removeMin until it becomes 0.
  • #9: //Thus, the first removeMin operation takes time O(n) as there are n entries, then the second one// takes time O(n 1) as one entry has already been moved to sequence S and so number of elements are (n-1) now and so on, //until the last (nth) operation takes time O(1). Therefore, //the total time needed for the second phase is //
  • #10: Next is insertion sort: In insertion sort the 鍖rst entry is always taken as sorted. // Insertion of the second entry requires one comparison with the first entry, in order to 鍖nd its proper position. //Insertion of the third entry requires two comparisons, and // fourth entry requires three comparisons and so on. This method is known as insertion sort, where in each iteration, one entry is added to the sorted list. Inserting after comaprison
  • #11: Insertion sort using priority queue is again a two phase process, : here we have a data set in sequence S, and // an empty priority queue P, In Phase 1, we remove the// first element of list and insert it into Priority queue P,, then second element// is removed from the sequence and we scan the data in priority queue , until we find the correct place for this element. , same step is repeated for //third element, it is compared with existing two elements in priority queue and placed at right position, and this is repeated for the whole data set.// // // In Phase 2, we call removeMin method on Priority queue repeatedly,// here because of phase 1 every time it returns the first element of the list and// // we add that element at the end of Sequence S, and this way we get sorted sequence S.
  • #12: Analyzing the running time of this whole process, we see that phase 1 is the bottleneck of this sorting ,//as for placing first element , there is no comparison , //while for second element , there is 1 comparison and so on. and like selection sort, //insertion sort also runs in O(n2) time