Naïve Sorting Algorithms - Carnegie Mellon University
[Pages:7]Na?ve Sorts
11/4/2010
Na?ve Sorting Algorithms
There are three standard algorithms
Bubble or exchange sort Insertion Sort Selection Sort
Bubble Sort
Big Idea: Compare adjacent entries and swap when A[i] > A[i+1] Example:
Na?ve sorting algorithms
Bubble sort: scan for flips, until all are fixed
3
2
1
6
5
4
2
3
1
6
5
4
2
1
3
6
5
4
2
1
3
5
6
4
2
1
3
5
4
6
Etc...
Na?ve Sorting
for i=1 to n-1 { for j=0 to n-i-1 if (A[j] > A[j+1]) swap(A[j], A[j+1]); if (no swaps) break; } What is the complexity of the algorithm, if
All keys are equal? Keys are sorted in reverse order? Keys are sorted? keys are randomly distributed?
Insertion Sort
Big Idea: Assume the list [0,1...,i-1] is sorted. Insert A[i] element to right place. Example:
1
Insertion sort
Sorted subarray
105 47 13 99 30 222 47 105 13 99 30 222 13 47 105 99 30 222 13 47 99 105 30 222 13 30 47 99 105 222 105 47 13 99 30 222
11/4/2010
Insertion sort
? Algorithm for i = 1 to n-1 do
insert a[i] in the proper place in a[0:i-1]
? Correctness ?Consider the Loop Invariant: after i steps, the sub-array A[0:i] is sorted ?Show that loop invariant holds at the beginning and is true at the end of the loop ?More on correctness of algorithms later
Selection Sort
Big Idea: Find the max of the list and exchange with the last element Example:
Complexity of Na?ve Sorts
Analysis Bubble
Insertion
Selection
Merge Sort
Divide-and-conquer
2
Merging Two Sorted Arrays
All the work in merge sort is done at the merge step. Example
1 13 24 26
2 15 27 38
11/4/2010 Quick Sort
Quicksort Quicksort was invented in 1960 by Tony Hoare.
Quicksort has O(N2) worst-case performance, and on average O(N log N).
More importantly, it is the fastest known comparisonbased sorting algorithm in practice.
Quicksort idea
Choose a pivot.
Rearrange so that pivot is in the "right" spot.
Recurse on each half and conquer!
Quicksort algorithm
If array A has 1 (or 0) elements, then done. Choose a pivot element x from A. Divide A-{x} into two arrays:
B = {yA | yx} C = {yA | yx} Result is B+{x}+C. Recurse on arrays B and C
Quickso10r5t 4a7 lgo13 rit17hm30 222 5 19
19
5
17 13
47 30 222 105
13
5
17
47
30
222 105
105 222
3
11/4/2010
Place the pivot algorithm
Assume we have an array of size n Pick a pivot x Place the pivot x in the last place of the array Have two pointers i = 0, j = n-2
while ( i pivot) j--; while (A[i] < pivot) i--; swap (A[i], A[j]);
} swap (A[i], pivot);
Example
Show how to place the pivot (choose middle element) in the right place 34 24 56 17 19 45 90 23 36
Ananda Gunawardena
Na?ve sorting algorithms
Bubble sort: scan for flips, until all are fixed
321654 231654 213654 213564
2 1 3 5 4 6 Etc...
Na?ve Sorting
for i=1 to n-1 { for j=0 to n-i-1 if (A[j].compareTo(A[j+1])>0) swap(A[j], A[j+1]); if (no swaps) break; } What happens if
All keys are equal? Keys are sorted in reverse order? Keys are sorted? keys are randomly distributed?
Exercise: Count the number of operations in bubble sort and find a Big O analysis for bubble sort
Insertion sort
Sorted subarray
105 47 13 99 30 222 47 105 13 99 30 222 13 47 105 99 30 222 13 47 99 105 30 222 13 30 47 99 105 222 105 47 13 99 30 222
4
Insertion sort
? Algorithm for i = 1 to n-1 do
insert a[i] in the proper place in a[0:i-1]
? Correctness ?Note: after i steps, the sub-array A[0:i] is sorted
11/4/2010
How fast is insertion sort?
To insert a[i] into a[0:i-1], slide all elements larger than a[i] to the right.
tmp = a[i]; for (j = i; j>0 && a[j-1]>tmp; j--)
a[j] = a[j-1]; a[j] = tmp;
# of slides = O(#inversions) very fast if array is nearly sorted to begin with
Selection sort
? Algorithm for i = n-1 to 1 do
Find the largest entry in the in the subarray A[0:i]
Swap with A[i]
What is the runtime complexity of selection sort?
Sorting Comparison
Discuss the pros and cons of each of the na?ve sorting algorithms
Advanced Sorting
Quick Sort Fastest algorithm in practice
Algorithm Find a pivot Move all elements smaller than pivot to left Move all elements bigger than pivot to right Recursively sort each half O(n log n) algorithm
5
11/4/2010
Merge Sort
Divide the array into two equal halves Divide each half recursively until each array is of size 1 Merge two (sorted) arrays of size 1 Complete the process recursively
Heap Sort
Build a max heap Delete Max (attach to end of array) until heap is empty Resulting array is sorted Complexity
Bucket Sort
Bucket sort
In addition to comparing pairs of elements, we require these additional restrictions:
all elements are non-negative integers all elements are less than a predetermined maximum value Elements are usually keys paired with other data
Bucket sort 13312
1
2
3
Bucket sort characteristics
Runs in O(N) time. Easy to implement each bucket as a linked list. Is stable:
If two elements (A,B) are equal with respect to sorting, and they appear in the input in order (A,B), then they remain in the same order in the output.
6
Radix Sort
11/4/2010
Radix sort
If your integers are in a larger range then do bucket sort on each digit Start by sorting with the low-order digit using a STABLE bucket sort. Then, do the next-lowest,and so on
Radix sort
Example:
2
0 1 0
0 1 0
0 0 0
0 0 0
0
0
0 0 0
0 0 0
1 0 0
0 0 1
1
5
1 0 1
1 0 0
1 0 1
0 1 0
2
1
0 0 1
1 1 0
0 0 1
0 1 1
3
7
1 1 1
1 0 1
0 1 0
1 0 0
4
3
0 1 1
0 0 1
1 1 0
1 0 1
5
4
1 0 0
1 1 1
1 1 1
1 1 0
6
6
1 1 0
0 1 1
0 1 1
1 1 1
7
Each sorting step must be stable.
Radix sort characteristics
Each sorting step can be performed via bucket sort, and is thus O(N).
If the numbers are all b bits long, then there are b sorting steps.
Hence, radix sort is O(bN).
WRhadaixtsoart bcanobue tusendofonr d-ebciminalanurmyb?ers and
alphanumeric strings.
0 3 2 2 2 4 0 1 6 0 1 5 0 3 1 1 6 9 1 2 3 2 5 2
0 3 1 0 3 2 2 5 2 1 2 3 2 2 4 0 1 5 0 1 6 1 6 9
0 1 5 0 1 6 1 2 3 2 2 4 0 3 1 0 3 2 2 5 2 1 6 9
0 1 5 0 1 6 0 3 1 0 3 2 1 2 3 1 6 9 2 2 4 2 5 2
7
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- fundamentals of programming python search and sorting algorithms
- introduction to python programming
- sorting algorithm the case for a learned massachusetts institute of
- sorting algorithms in python real python seomagnifier
- optimizing sorting with genetic algorithms
- algorithmic problem solving with python washington state university
- burrows wheeler transform and fm index department of computer science
- evaluation of sorting algorithms mathematical and empirical ijser
- advanced topics in comp sci project—sorting algorithm analysis
- naïve sorting algorithms carnegie mellon university