1 / 17

CS 253: Algorithms

CS 253: Algorithms. Chapter 2 Sorting Insertion sort Bubble Sort Selection sort Run-Time Analysis. Credit : Dr. George Bebis. The Sorting Problem. Input: A sequence of n numbers a 1 , a 2 , . . . , a n Output:

eyad
Download Presentation

CS 253: Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 253: Algorithms Chapter 2 Sorting Insertion sort Bubble Sort Selection sort Run-Time Analysis Credit: Dr. George Bebis

  2. The Sorting Problem • Input: A sequence of nnumbers a1, a2, . . . , an • Output: A permutation (reordering) a1’, a2’, . . . , an’ of the input sequence such that a1’ ≤ a2’ ≤ · · · ≤ an’ • Internal Sort- The data to be sorted is all stored in RAM. • External Sort - Data to be sorted does not fit in the RAM and therefore stored in an external storage device (e.g. HardDisk)

  3. 24 10 6 Insertion Sort Similar to sorting a hand of playing cards 36 To insert 12, we need to make room for it by moving first 36 and then 24. 12

  4. 24 10 6 Insertion Sort 36 12

  5. 24 36 Insertion Sort 10 6 12

  6. Insertion Sort input array 5 2 4 6 1 3 at each iteration, the array is divided in two sub-arrays: left sub-array right sub-array unsorted sorted

  7. Insertion Sort

  8. 1 2 3 4 5 6 7 8 a1 a2 a3 a4 a5 a6 a7 a8 key Alg.:INSERTION-SORT(A) for j ← 2to n do key ← A[ j ] % Insert A[ j ] into the sorted sequence A[1 . . j -1] i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← key • Insertion sort – sorts the elements in place

  9. times n n-1 n-1 n-1 n-1 Operation count for Insertion Sort cost c1 c2 0 c4 c5 c6 c7 c8 INSERTION-SORT(A) for j ← 2to n do key ← A[ j ] % Insert A[ j ] into the sorted …. i ← j - 1 while i > 0 and A[i] > key do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← key tj: # of times the while statement is executed at iteration j

  10. Best Case Analysis • The array is already sorted A[i] ≤ key upon the first time the while loop test is run then (tj= 1) and

  11. Worst Case Analysis • The array is sorted in reverse order • Always A[i] > keyin while loop test • Have to compare keywith all elements to the left of the jth position  compare withj-1 elements  tj = j

  12. 8 4 6 9 2 3 1 Bubble Sort • Swaps adjacent elements that are out of order • Repeatedly pass through the array • Simpler, but slower than Insertion sort i 1 2 3 n j

  13. 1 1 8 8 8 1 1 8 1 8 8 1 1 2 2 4 2 4 2 2 1 8 4 4 8 4 6 6 4 6 8 4 1 3 4 6 3 3 3 9 9 1 6 9 6 6 4 4 4 6 8 4 6 9 6 9 2 2 6 8 4 9 9 1 9 2 2 2 2 2 9 1 3 8 6 2 6 8 3 1 3 3 9 3 9 3 9 3 9 3 3 i = 1 j i = 2 j i = 1 j i = 3 j i = 1 j i = 4 j i = 1 j i = 5 j i = 1 j i = 6 j i = 1 i = 1 j j i = 7 j Bubble Sort Example

  14. 8 4 6 9 2 3 1 i = 1 j Bubble Sort Alg.:BUBBLESORT(A) fori 1tolength[A] do forj  length[A]downtoi + 1 do ifA[j] < A[j -1] then exchange A[j]  A[j-1] i

  15. Bubble-Sort Running Time Alg.: BUBBLESORT(A) fori 1tolength[A] do forj  length[A]downtoi + 1 do ifA[j] < A[j -1] then exchange A[j]  A[j-1] c1 c2 Comparisons and Exchanges:  n2/2 c3

  16. 1 1 1 1 1 8 1 1 4 2 2 4 2 2 2 2 3 3 3 6 6 3 6 3 9 9 4 9 4 4 9 4 4 2 6 6 6 2 4 9 3 3 9 6 8 3 8 6 8 9 1 9 8 8 8 8 Selection Sort • Find the smallest element in the array and exchange it with the element in the first position • Find the second smallest element and exchange it with the element in the second position • Continue until the array is sorted Example

  17. n2/2 comparisons • n exchanges Analysis of Selection Sort costtimes c1 1 c2 n c3 n-1 c4 c5 c6 n-1 Alg.:SELECTION-SORT(A) n ← length[A] for j ← 1to n - 1 do smallest ← j for i ← j + 1to n do if A[i] < A[smallest] then smallest ← i exchange A[j] ↔ A[smallest]

More Related