Home » , , » Selection Sort Min and Max

Selection Sort Min and Max

Posted by Agus Nur Ikhsan on Minggu, 20 November 2011

Change the selection sort (min) to min and max selection.

To find the minimum value and the place where found (index), we use the following methods:
void Sorting::minimum(int from, int n, int &temp) {
int min = data[from];
temp = from;
for (int i = from+1; i < n; i++)
if (data[i] < min)
{ min = data[i];
temp = i;
}
}

These methods used to find the smallest element of the array data from the position from up to n-1. The output is a place where the smallest element is found. We add a statement to look for the largest element and the place where the element was found.

we change the methods to be:
void Sorting::min_max(int from, int n, int &temp_min, int &temp_max) {
int min = data[from];
int max = data[from];
temp_min = from;
temp_max = from;
for (int i = from+1; i < n; i++) {
if (data[i] < min)
{ min = data[i];
temp_min = i;
}
if (data[i] > max)
{ max = data[i];
temp_max = i;
}
}
}

Thus, we change selection_sort methods following :

void Sorting::selection_sort(){
int t;
for (int i = 0; i
minimum(i, n, t);
swap(data[i], data[t]);
}
}
to be :
void Sorting::selection_sort_min_max() {
int left, right;
for (int i = 0; i < n/2; i++) {
min_max(i, n-i, left, right);
swap(data[i], data[left]);
swap(data[n-i-1], data[right]);
}
}

Thanks for reading & sharing Agus Nur Ikhsan

Previous
« Prev Post

0 komentar:

Posting Komentar

Popular Posts