sorting techniques –selection sort –bubble sort. selection sort working : “select” an...

15
Sorting Techniques Selection Sort Bubble Sort

Upload: maude-fox

Post on 18-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Sorting Techniques

– Selection Sort

– Bubble Sort

Page 2: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

SelectionSelection SortSortWorking : “SELECT” an Element and Put in PROPER PLACE

Description :

1. From position 0, find the smallest and then exchange it with the

element in position 0.

2. From position 1, find the smallest and exchange with position 1.

3. Now from 2 do the same until you have reached the end of the

list

General Algorithm:

for positions i = 0 to max-1

find smallest from position i

exchange with position i

Page 3: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Selection

Sort

67 84 49 50 7533 21

67 84 49 50 753321

67 84 49 50 753321

678449 50 753321

67 8449 50 753321

67 8449 50 753321

Starting from

position 0 find

the smallest and

exhange with element in position 0start at

position 1 ….

Page 4: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Selection SortSelection Sort#define MAX 5int Min(int a[], int pos){int i,m,index=pos;m=a[pos]; // Get the Current Valuefor (i=pos+1;i<MAX;i++) //Search from next{ if (a[i]<m) {m=a[i];index=i;} return index;}

void main(){int A[MAX],i,temp,k;for (i=0;i<MAX;i++) cin>>A[i]; //INPUT

for (i=0;i<MAX;i++){k=Min(A,i); //FIND if (A[k]<A[i]) //SWAP{temp=A[k];A[k]=A[i];A[i]=temp;}}

cout<<”Sorted elements “ << endl;

for (i=0;i<MAX;i++)cout<<A[i]<<endl;}

Page 5: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

8 45 56 7823 32 After pass 5

23 8 32 5678 45 Original list

8 23 32 5678 45 After pass 1

8 78 32 5623 45 After pass 2

8 78 45 5623 32 After pass 3

8 45 78 5623 32 After pass 4

E

X

E

R

C

I

S

E

Page 6: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Bubble SortBubble Sort Working:

It works by comparing neighbours in the array and exchanging them if necessary to put the smaller of the pair first.

On each pass through the array an element 'bubbles' up into place.

General Algorithm: for (i=0;i<max;i++)

for (j=0;j<max-1;j++)

if (a[j]>a[j+1] )

{ save = a[j]

a[j] = a[j+1]

a[j+1] = save

}

Page 7: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Bubble Sort

5

8

1

2

3

I = 0 j= 4 ( compare j with j-1and swap )

5

1

8

2

3

5

3

8

2

1

5

3

8

1

2

1

3

8

5

2

Pass-1

1

2

538

1

2

53

8

Pass-2 Pass-3

Page 8: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Bubble SortBubble Sort// The Algorithm Sinks the LARGEST TO THE BOTTOM

#define MAX 5

void main()

{

int A[MAX],i,j,temp,sorted=0;

for (i=0;i<MAX;i++) cin>>A[i];

i=0;

while ((i<MAX)&&(sorted==0)){sorted=1;for (j=0;j<MAX-i-1;j++){if (A[j]>A[j+1]) // Largest sinks

{ temp=A[j];A[j]=A[j+1];A[j+1]=temp;sorted=0;

}}i++;}

cout<<”Sorted Elements"<<endl;

for (i=0;i<MAX;i++)cout<<A[i]<<endl;

}

Page 9: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

23 8 32 5678 45 Original list

8 45 32 5623 78 After pass 1

8 78 45 5623 32 After pass 2

8 45 78 5623 32 After pass 3

8 45 56 7823 32 After pass 4Sorted!

EXERCISEEXERCISE

Page 10: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Merge Sort

Page 11: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Concept UsedConcept Used• What is the concept used What is the concept used in Merge and Quick Sort? Merge and Quick Sort?

This two sorting techniques use This two sorting techniques use

“ “DIVIDE and CONQUERDIVIDE and CONQUER “ Technique. “ Technique.

• What is Divide and Conquer Technique?The Problem is divide into similar The Problem is divide into similar subproblemssubproblems

When to stop Dividing?When to stop Dividing?

When the problem is small enough to be When the problem is small enough to be handled.handled.

Outline for divide and conquer Sorting ( NEXT )Outline for divide and conquer Sorting ( NEXT )

Page 12: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Outline : Outline : Divide and conquer SortingDivide and conquer SortingSortlist( )

{ if the list has length greater than 1 then

{ partition the list into lowlist,highlist;

sort(lowlist);

sort(highlist);

combine(lowlist,highlist);

} }

Where does the Quick and merge sort differ?

They differ in the Way the the List is partitioned

Page 13: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Merge SortMerge SortWorking Break the list into two sublists of size as nearly equal as possible and then sort them separately. Then Merge the two sorted list. Hence know as MERGE sort.

EG : 8 7 6 5 4 3 2 1 ( MID = L+H/2 = 1+8 /2 = 4 )

8 7 6 5 ( 1+4/2=2) 4 3 2 1 ( 1+4/2=2)

8 7 6 5 4 3 2 1

Now Sort & Merge:

7 8 5 6 3 4 1 2

5 6 7 8 1 2 3 4

1 2 3 4 5 6 7 8

Page 14: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

E

X

C

E

R

S

I

S

E

26 33 35 29 19 12 22

26 33 35 29 19 12 22

26 33 35 29 19 12 22

26 33 29 35 12 19 22

26 33 3529 12 19 22

26 33 352912 19 22

Page 15: Sorting Techniques –Selection Sort –Bubble Sort. Selection Sort Working : “SELECT” an Element and Put in PROPER PLACE Description : 1. From position 0,

Algorithm - Merge SortVoid merge(int lpos, int rpos, int rend)

{ int I,lend,numelements,tmppos,tmparray[MAX]

lend = rpos-1; tmppos = lpos;

numelements = rend - lpos+1;

while ((lpos <= lend) && ( rpos <=rend))

if ( a[lpos] <= a[rpos)

tmparray[tmppos++] = a[lpos++];

else tmparray[tmppos++] = a[rpos++];

while (lpos <= lend)

tmparray[tmppos++] = a[lpos++];

while (rpos <= rend)

tmparray[tmppos++] = a[rpos++];

for (I=0;I<numelements;I++,rend--)

a[rend]= tmparray[rend];

}

Void mergesort( int left, int right )

int center;

if ( left < right)

{ center = (left=right/2);

mergesort(left,center);

mergesort(center+1,right);

merge(left,center+1,right);

}

Void main( )

{//input

MergeSort(0,Max-1)

//output }

7 8 5 6

7 85 6