Upcoming SlideShare
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Standard text messaging rates apply

# Computer notes - Sorting

1,281

Published on

Selection Sort, Insertion Sort, Bubble Sort Main idea: find the smallest element put it in the first position find the next smallest element put it in the second position

Selection Sort, Insertion Sort, Bubble Sort Main idea: find the smallest element put it in the first position find the next smallest element put it in the second position

1 Comment
3 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Thanks sir you sort my lot of problem
you http://ecomputernotes.com
site is amazine all i need are avail,there thanks to provide us

Are you sure you want to  Yes  No
Views
Total Views
1,281
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
95
1
Likes
3
Embeds 0
No embeds

No notes for slide
• End of lecture 43. Start of 44
• End of lecture 44.
• ### Transcript

• 1. Class No.38 Data Structures http://ecomputernotes.com
• 2. Sorting http://ecomputernotes.com
• 3. Sorting Integers 20 8 5 10 7 5 7 8 10 20 How to sort the integers in this array? http://ecomputernotes.com
• 4. Elementary Sorting Algorithms
• Selection Sort
• Insertion Sort
• Bubble Sort
http://ecomputernotes.com
• 5. Selection Sort
• Main idea:
• find the smallest element
• put it in the first position
• find the next smallest element
• put it in the second position
• And so on, until you get to the end of the list
http://ecomputernotes.com
• 6. Selection Sort -- Example 19 12 7 5 http://ecomputernotes.com 1 2 3 0 7 12 19 5 a: 1 2 3 0 7 19 12 5 a: 1 2 3 0 19 7 12 5 a: 1 2 3 0 7 12 19 5 a: 1 2 3 0 5 7 12 19 a: a: 1 2 3 0
• 7. Selection Sort: Code
• void selectionSort(int *arr, int N)
• {
• int posmin, count, tmp;
• for(count=0;count<N;count++)
• {
• posmin = findIndexMin(arr,count,N);
• tmp=arr[posmin];
• arr[posmin]=arr[count];
• arr[count]=tmp;
• }
• }
http://ecomputernotes.com
• 8. Selection Sort: Code
• int findIndexMin(int *arr, int start, int N)
• {
• int posmin=start;
• int index;
• for(index=start; index < N; index++)
• if (arr[index]<arr[posmin])
• posmin=index;
• return posmin;
• }
http://ecomputernotes.com
• 9. Swap Action (SelectionSorting) http://ecomputernotes.com 5 8 20 10 7 5 7 20 10 8 5 7 8 10 20 20 8 5 10 7 5 7 8 10 20
• 10. Selection Sort Analysis
• What is the time complexity of this algorithm?
• Worst case == Best case == Average case
• Each iteration performs a linear search on the rest of the array
• first element N +
• second element N-1 +
• penultimate element 2 +
• last element 1
• Total N(N+1)/2 = ( N 2 +N)/2
http://ecomputernotes.com
• 11. Insertion Sort
• Basic idea ( sorting cards ):
• Starts by considering the first two elements of the array data, if out of order, swap them
• Consider the third element, insert it into the proper position among the first three elements.
• Consider the forth element, insert it into the proper position among the first four elements.
• … …
http://ecomputernotes.com
• 12. Insertion Sort -- Example http://ecomputernotes.com 1 2 3 0 12 5 7 19 a : 1 2 3 0 19 5 7 12 a : 1 2 3 0 12 19 7 5 a : 1 2 3 0 7 12 19 5 a :
• 13. Insertion Sort: Code
• void insertionSort(int *arr, int N)
• {
• int pos, count, val;
• for(count=1; count < N; count++)
• {
• val = arr[count];
• for(pos=count-1; pos >= 0; pos--)
• if (arr[pos] > val)
• arr[pos+1]=arr[pos];
• else break;
• arr[pos+1] = val;
• }
• }
http://ecomputernotes.com
• 14. Insertion Sort -- animation count val pos 1 12 0 1 12 -1 19 12 http://ecomputernotes.com 1 2 3 0 12 5 7 19 a : 1 2 3 0 19 5 7 19 a : 1 2 3 0 5 7 19 a : 12 1 2 3 0 19 5 7 12 a :
• 15. Insertion Sort -- animation (cont) count val pos 2 5 1 2 5 -1 19 12 2 5 0 5 http://ecomputernotes.com 1 2 3 0 12 19 7 5 a : 1 2 3 0 19 5 7 12 a : 1 2 3 0 5 7 12 a : 19 1 2 3 0 19 7 12 a : 19 1 2 3 0 12 19 7 12 a :
• 16. Insertion Sort -- animation (cont) count val pos 3 7 2 3 7 0 3 7 1 19 12 7 http://ecomputernotes.com 1 2 3 0 12 19 7 5 a : 1 2 3 0 12 19 7 5 a : 1 2 3 0 12 19 19 5 a : 1 2 3 0 12 12 19 5 a : 1 2 3 0 7 12 19 5 a :
• 17. Insertion Sort Analysis
• What is the time complexity of this algorithm?
• Worst case > Average case > Best case
• Each iteration inserts an element at the start of the array, shifting all sorted elements along
• second element 2 +
• penultimate element N-1 +
• last element N
• Total (2+N)(N-1)/2 = O(N 2 )
http://ecomputernotes.com
• 18. Bubble Sort
• Basic idea ( lighter bubbles rise to the top ):
• Exchange neighbouring items until the largest item reaches the end of the array
• Repeat for the rest of the array
http://ecomputernotes.com
• 19. Bubble Sort -- Example a: http://ecomputernotes.com 1 2 3 0 12 7 19 5 a: 1 2 3 0 12 7 19 5 a: 19 12 7 5 1 2 3 0 a: 12 19 7 5 a: 1 2 3 0 5 12 7 19 1 2 3 0 a: 1 2 3 0 12 7 19 5 a: 1 2 3 0 7 12 19 5 a: 1 2 3 0 7 12 19 5 a: 1 2 3 0 7 12 19 5 a: 1 2 3 0 7 12 19 5 a:
• 20. Bubble Sort: Code
• void bubbleSort(int *arr, int N){
• int i, temp, bound = N-1;
• int swapped = 1;
• while (swapped > 0 ) {
• swapped = 0;
• for(i=0; I < bound; i++) if ( arr[i] > arr[i+1] ) {
• temp = arr[i];
• arr[i] = arr[i+1];
• arr[i+1] = temp;
• swapped = i;
• }
• bound = swapped;
• }
• }
http://ecomputernotes.com
• 21. Bubble Sort Analysis
• What is the time complexity of this algorithm?
• Worst case > Average case > Best case
• Each iteration compares all the adjacent elements, swapping them if necessary
• first iteration N +
• second iteration N-1 +
• last iteration 1
• Total N(1+N)/2 = O(N 2 )
http://ecomputernotes.com
• 22. Summary
• Insertion, Selection and Bubble sort:
• Worst case time complexity is proportional to N 2 .
Best sorting routines are N log(N) http://ecomputernotes.com
• 23. NLogN Algorithms
• Divide and Conquer
• Merge Sort
• Quick Sort
• Heap Sort
http://ecomputernotes.com
• 24. Divide and Conquer What if we split the list into two parts? 10 12 8 4 2 11 7 5 http://ecomputernotes.com 10 12 8 4 2 11 7 5
• 25. Divide and Conquer Sort the two parts: http://ecomputernotes.com 10 12 8 4 2 11 7 5 4 8 10 12 2 5 7 11
• 26. Divide and Conquer Then merge the two parts together: http://ecomputernotes.com 4 8 10 12 2 5 7 11 2 4 5 7 8 10 11 12