-
Notifications
You must be signed in to change notification settings - Fork 2
/
selectionSort.cpp
89 lines (69 loc) · 1.43 KB
/
selectionSort.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;
class Selection
{
int size;
int a[200000];
public:
Selection()
{
cout<<"Enter the size: "<<endl;
cin>>size;
}
//generating random numbers from 0 to 99.
void getElements()
{
for(int i=0; i<size; i++)
{
a[i] = rand() % 100;
}
}
//selection sort algorithm
void selectionSort()
{
int i,j;
int min;
for(i=0; i<size-1; i++)
{
min = i;
for(j=i+1; j<size; j++)
{
if(a[j] < a[min])
min = j;
}
//call the swap function only when it is required. Omitting this condition takes up space in the stack and increases computation time.
if(min != i) //optional condition
swap(a[min], a[i]);
} // end outer for
}
//swapping two numbers
void swap(int &x, int &y)
{
int temp;
temp = x;
x=y;
y=temp;
}
//display in the case of test output
//You need to make a call to this function.
void display()
{
for(int i=0; i<size; i++)
cout<<a[i]<<" ";
}
}; // end of class
int main()
{
Selection obj;
obj.getElements();
clock_t start,end;
double total_time;
start=clock(); //get the time just before the algorithm starts
obj.selectionSort();
end = clock(); //get the time just after the algorithm ends
total_time = (double)(end - start)/(CLOCKS_PER_SEC);
cout<<endl<<"The time taken is " << total_time << "seconds."<<endl;
return 0;
}