Academic Updates and Sorting Algorithms Overview

 
Notice: Changed TA Office hour
Thursday
 
11am-1pm 
 noon-2pm
 
HW10
 
Different ways of solving it
Using a queue
Using a sorted set (e.g. treap or red-black tree)
Embedding a doubly-linked list inside of a hash table
Other approaches?
Time complexity
Add(CaptchaPair cp)
RemoveMin()
Remove(CaptchaPair cp)
 
 
HW10 (Average Time Complexity)
 
HW 10 Pitfalls
 
clock() lacks precision in some computers
What to do?
Define a counter variable “int count”
Increment the counter every time an addition occurs
 
Questions?
 
Sorting
 
What are some sorting algorithms that you know?
What is the best?
How would you sort a pile of papers alphabetically?
 
Sorting
 
Insertion Sort (Why useful)?
Merge Sort
Quick Sort
Heap Sort
Quick Sort + Insertion Sort
Quick Sort + Heap Sort
 
Insertion Sort PsuedoCode
 
for (int i=2; i<n; i++)
 
for (k = i; k > 1 && a[k] < a[k-1]; k--)
  
swap(a[k], a[k-1]);
 
9
0.56
1.12
1.17
0.32
2.78
7.42
3.14
7.71
Value
6.21
4.42
 
Iteration 0:  
step 0
.
 
10
0.56
1.12
1.17
0.32
2.78
7.42
3.14
7.71
Value
6.21
4.42
 
Iteration 1:  
step 0
.
11
0.56
1.12
1.17
0.32
2.78
7.42
3.14
7.71
Value
6.21
4.42
Iteration 2:  
step 0
.
12
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 2:  
step 1
.
 
13
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
 
Iteration 2:  
step 2
.
14
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 3:  
step 0
.
15
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 3:  
step 1
.
 
16
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
 
Iteration 3:  
step 2
.
17
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 4:  
step 0
.
18
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 4:  
step 1
.
 
19
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
 
Iteration 4:  
step 2
.
20
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 5:  
step 0
.
21
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 5:  
step 1
.
22
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 5:  
step 2
.
23
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 5:  
step 3
.
24
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 5:  
step 4
.
 
25
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
 
Iteration 5:  
step 5
.
26
7.42
1.12
1.17
0.32
2.78
0.56
3.14
7.71
Value
6.21
4.42
Iteration 6:  
step 0
.
 
Best Case Scenario for Insertion Sort?
 
K-Nearly Sorted Arrays
 
K here is 2
What is the running time of insertion sort?
 
Optimize
 
How would you optimize insertion sort for human sorting?
 
Divide and Conquer
 
Smaller problems and be solved more efficiently
(If needed) Solutions to smaller problems can be combined
efficiently
Mergesort
 and 
quicksort
 
 
Merge Sort
 
 
MergeSort
 
How many levels are there in a merge sort?
What is the complexity of the merge operation?
 
 
Merge
 
Merge
 
Merge
 
Merge
 
Merge Sort Analysis
 
Complexity of Merge Operation?    
O(n)
Number of levels?       
O(log n)
 
Worst case time complexity?
 
 
Merge Sort PseudoCode
 
MergeSort(a[1], …, a[n/2])
MergeSort(a[n/2+1], … , a[n])
Merge(a[1], …, a[n])
 
 
Quick Sort
 
Quick Sort PseudoCode
 
Choose pivot element 
p
Perform partition so that items less than 
p 
are in a[1, …, k-1]
and items greater or equal to 
p
 are in a[k+1, …, n]
QuickSort(a[1, … , k-1])
QuickSort(a[k+1, …, n])
 
QuickSort Advantages over MergeSort
 
Partition can be done in-place
 
In-place Partition Algorithm (2-way)
 
 
http://me.dt.in.th/page/Quicksort/
 
Quick Sort Optimizations
 
Choosing the pivot
Partition Algorithm
 
Quick Sort
 
Worst Case?
 
Quick Sort
 
HeapSort
 
Can you use heaps to sort?
 
Heap Sort
 
Build heap (What is the complexity?)
Remove items from heap (What is the complexity?)
 
 
K-Nearly Sorted Arrays
 
K here is 2
What is the running time of insertion sort?
 
Heap Sort for K-nearly sorted arrays
 
Build heap H of size K
for(int i=K; i<n; i++)
A[i-K] = H.removeMin();
H.add(A[i]);
RemoveMin() from the heap, and add to A[] until empty
Time Complexity? O(n log(k) ) vs O(n * k) for insertion sort
(good when k is much smaller than n)
 
 
Run Time Complexity
 
Demos
 
http://www.sorting-algorithms.com/quick-sort
Slide Note
Embed
Share

Announcement of changes in TA office hours, discussion on different approaches to solving a problem, average time complexity analysis, pitfalls in clock precision, sorting algorithms comparison, and a deep dive into insertion sort with visual representation of array indexing.

  • Academic
  • Updates
  • Sorting Algorithms
  • Time Complexity
  • Pitfalls

Uploaded on Sep 10, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Notice: Changed TA Office hour Thursday 11am-1pm noon-2pm

  2. HW10 Different ways of solving it Using a queue Using a sorted set (e.g. treap or red-black tree) Embedding a doubly-linked list inside of a hash table Other approaches? Time complexity Add(CaptchaPair cp) RemoveMin() Remove(CaptchaPair cp)

  3. HW10 (Average Time Complexity) Add(CaptchaPair cp) RemoveMin() Remove(CaptchaPair cp) Queue SortedSet HashTable + DLList O(1) O(log n) O(1) O(1) O(log n) O(1) O(n) O(log n) O(1)

  4. HW 10 Pitfalls clock() lacks precision in some computers What to do? Define a counter variable int count Increment the counter every time an addition occurs

  5. Questions?

  6. Sorting What are some sorting algorithms that you know? What is the best? How would you sort a pile of papers alphabetically?

  7. Sorting Insertion Sort (Why useful)? Merge Sort Quick Sort Heap Sort Quick Sort + Insertion Sort Quick Sort + Heap Sort

  8. Insertion Sort PsuedoCode for (int i=2; i<n; i++) for (k = i; k > 1 && a[k] < a[k-1]; k--) swap(a[k], a[k-1]);

  9. Array index 0 1 2 3 4 5 6 7 8 9 Value 2.78 7.42 0.56 1.12 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 0: step 0. 9

  10. Array index 0 1 2 3 4 5 6 7 8 9 Value 2.78 7.42 0.56 1.12 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 1: step 0. 10

  11. Array index 0 1 2 3 4 5 6 7 8 9 Value 2.78 7.42 0.56 1.12 1.17 0.32 0.56 7.42 6.21 4.42 3.14 7.71 Iteration 2: step 0. 11

  12. Array index 0 1 2 3 4 5 6 7 8 9 Value 2.78 0.56 0.56 2.78 7.42 1.12 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 2: step 1. 12

  13. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 2.78 7.42 1.12 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 2: step 2. 13

  14. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 2.78 7.42 1.12 1.17 0.32 1.12 7.42 6.21 4.42 3.14 7.71 Iteration 3: step 0. 14

  15. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 2.78 1.12 2.78 1.12 7.42 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 3: step 1. 15

  16. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 2.78 7.42 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 3: step 2. 16

  17. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 2.78 7.42 1.17 7.42 1.17 0.32 6.21 4.42 3.14 7.71 Iteration 4: step 0. 17

  18. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 2.78 1.17 2.78 1.17 7.42 0.32 6.21 4.42 3.14 7.71 Iteration 4: step 1. 18

  19. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 1.17 2.78 7.42 0.32 6.21 4.42 3.14 7.71 Iteration 4: step 2. 19

  20. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 1.17 2.78 7.42 0.32 7.42 0.32 6.21 4.42 3.14 7.71 Iteration 5: step 0. 20

  21. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 1.17 2.78 0.32 2.78 0.32 7.42 6.21 4.42 3.14 7.71 Iteration 5: step 1. 21

  22. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 1.17 0.32 2.78 0.32 1.17 7.42 6.21 4.42 3.14 7.71 Iteration 5: step 2. 22

  23. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 1.12 0.32 1.12 0.32 1.17 2.78 7.42 6.21 4.42 3.14 7.71 Iteration 5: step 3. 23

  24. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.56 0.32 0.56 0.32 1.12 1.17 2.78 7.42 6.21 4.42 3.14 7.71 Iteration 5: step 4. 24

  25. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.32 0.56 1.12 1.17 2.78 7.42 6.21 4.42 3.14 7.71 Iteration 5: step 5. 25

  26. Array index 0 1 2 3 4 5 6 7 8 9 Value 0.32 0.56 1.12 1.17 2.78 7.42 6.21 7.42 6.21 4.42 3.14 7.71 Iteration 6: step 0. 26

  27. Best Case Scenario for Insertion Sort?

  28. K-Nearly Sorted Arrays Input Sorted Abs Diff 3 1 2 2 2 0 1 3 2 5 4 1 4 5 1 6 6 0 8 7 1 9 8 1 7 9 2 K here is 2 What is the running time of insertion sort?

  29. Optimize How would you optimize insertion sort for human sorting?

  30. Divide and Conquer Smaller problems and be solved more efficiently (If needed) Solutions to smaller problems can be combined efficiently Mergesort and quicksort

  31. Merge Sort

  32. MergeSort How many levels are there in a merge sort? What is the complexity of the merge operation?

  33. Merge

  34. Merge

  35. Merge

  36. Merge

  37. Merge Sort Analysis Complexity of Merge Operation? O(n) Number of levels? O(log n) Worst case time complexity?

  38. Merge Sort PseudoCode MergeSort(a[1], , a[n/2]) MergeSort(a[n/2+1], , a[n]) Merge(a[1], , a[n])

  39. Quick Sort

  40. Quick Sort PseudoCode Choose pivot element p Perform partition so that items less than p are in a[1, , k-1] and items greater or equal to p are in a[k+1, , n] QuickSort(a[1, , k-1]) QuickSort(a[k+1, , n])

  41. QuickSort Advantages over MergeSort Partition can be done in-place

  42. In-place Partition Algorithm (2-way) http://me.dt.in.th/page/Quicksort/

  43. Quick Sort Optimizations Choosing the pivot Partition Algorithm

  44. Quick Sort Worst Case?

  45. Quick Sort

  46. HeapSort Can you use heaps to sort?

  47. Heap Sort Build heap (What is the complexity?) Remove items from heap (What is the complexity?)

  48. K-Nearly Sorted Arrays Input Sorted Abs Diff 3 1 2 2 2 0 1 3 2 5 4 1 4 5 1 6 6 0 8 7 1 9 8 1 7 9 2 K here is 2 What is the running time of insertion sort?

  49. Heap Sort for K-nearly sorted arrays Build heap H of size K for(int i=K; i<n; i++) A[i-K] = H.removeMin(); H.add(A[i]); RemoveMin() from the heap, and add to A[] until empty Time Complexity? O(n log(k) ) vs O(n * k) for insertion sort (good when k is much smaller than n)

  50. Run Time Complexity Average O(n^2) O(n log n) O(n log n) O(n log n) ? Worst O(n^2) O(n log n) O(n^2) O(n log n) ? In place? Yes No Yes Yes ? Insertion Sort Merge Sort Quick Sort Heap Sort Quick Sort + Insertion Sort Introspective Sort ? ? ?

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#