Question: L2 It uses a selection sort to sort a group of numbers. A selection sort repeatedly selects the smallest value in an array and puts

L2

It uses a selection sort to sort a group of numbers. A selection sort repeatedly selects the smallest value in an array and puts it at the front.

#include

#include

/*

Program sorts an array of integers using a selection sort.

The general algorithm repeatedly finds the smallest number

in the array and places it at the front of the list.

*/

using namespace std;

int find_small_index (int start_index, int numbers []);

void swap_values (int index1, int index2, int numbers []);

int main(int argc, char *argv[])

{

// array of numbers

int numbers [10] = {7, 9, 21, 16, 65, 8, 32, 1, 17, 41};

int start_index; // current starting spot for search

int small_index; // index of the smallest number in the array

int index; // index used for print the array values

start_index = 0;

// continue finding the smallest value and placing it

// at the front of the list

while (start_index < 9)

{

small_index = find_small_index (start_index, numbers);

swap_values (small_index, start_index, numbers);

start_index++;

}

cout << " The sorted array is: ";

for (index = 0; index < 10; index++)

cout << numbers [index] << " ";

cout << " ";

system("PAUSE");

return EXIT_SUCCESS;

}

int find_small_index (int start_index, int numbers [])

{

int small_index, // smallest index to be returned

index; // current index being viewed

small_index = start_index;

for (index = start_index + 1; index < 10; index++)

if (numbers [index] < numbers [small_index])

small_index = index;

return small_index;

}

void swap_values (int index1, int index2, int numbers [])

{

int swapper;

swapper = numbers [index1];

numbers [index1] = numbers [index2];

numbers [index2] = swapper;

}

5. In the while loop in main, start_index only goes up to 8 (start_index < 9). Explain why the loop does not need to run when start_index equals 9 (the last index in the array).

6. In swap_values, swapper is declared as an int type. Why?

7. The program is hard coded to only work with arrays of 10 numbers. Add a constant called size before main that is assigned the number of elements to be sorted. Use this size constant in the rest of the program so that the sort will work for any number of values. Run your program with size equal to 12 (add 2 more numbers to the array in its declaration list).

8. A simple change to the program will sort the numbers from largest to smallest. Change your program so that it does this. Do not print the sorted values in reverse order! Actually change the sort.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!