In: Computer Science
Your job is to change the program so that it no longer uses indexes anywhere within the executable code but instead uses pointers into the array. Hint: This will be easy to think about if you change all indexes in the program to pointers. It might make sense if you also change their names. Thus: int start_index; would become: int *start_ptr; Make sure that your program will correctly sort any set of numbers. Pay particular attention to the boundary cases (start and end of the array).
SORT.CPP
#include#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; const int size = 20; int find_small_index (int start_index, int numbers []); void swap_values (int index1, int index2, int numbers []); void print (int numbers []); int main(int argc, char *argv[]) { // array of numbers int numbers [size] = {7, 9, 21, 16, 65, 8, 32, 1, 17, 41, 54, 128, 62, 44, 12, 1023, 89, 905, 32, -12}; int start_index; // current starting spot for search int small_index; // index of the smallest number in the array start_index = 0; // continue finding the smallest value and placing it // at the front of the list while (start_index < size - 1) { small_index = find_small_index (start_index, numbers); swap_values (small_index, start_index, numbers); start_index++; } cout << "\n\nThe sorted array is:\n"; print (numbers); cout << "\n\n"; return 0; } // finds and returns the index of the smallest number remaining in // the array 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; // look at each element for (index = start_index + 1; index < size; index++) // remember index of smaller value if (numbers [index] < numbers [small_index]) small_index = index; return small_index; } // swap the values in the array at indexes index1 and index2 void swap_values (int index1, int index2, int numbers []) { int swapper; swapper = numbers [index1]; numbers [index1] = numbers [index2]; numbers [index2] = swapper; } // prints the array in nice format, 10 numbers per line void print (int numbers []) { int on_line, // number of values printed on the line index; // index of current number being printed on_line = 0; // print each element in the array for (index = 0; index < size; index++) { cout << setw (5) << numbers [index]; on_line++; // if 10 numbers have been printed on the line // go to next line if (on_line == 10) { cout << "\n"; on_line = 0; } } }
Program:
SELECTIONSORT.CPP
#include
#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;
const int size = 20;
int find_small_value (int *start_pointer, int numbers []);
void swap_values (int *const, int *const,int numbers[]);
void print (int numbers []);
int main(int argc, char *argv[])
{
// array of numbers
int numbers [size] = {7, 9, 21, 16, 65, 8, 32, 1, 17, 41,
54, 128, 62, 44, 12, 1023, 89, 905, 32, -12};
int *start_pointer; // current starting spot for search
int *small_pointer; // pointer of the smallest number in the
array
*start_pointer = 0;
// continue finding the smallest value and placing it
// at the front of the list
while (*start_pointer < size - 1)
{
*small_pointer = find_small_value (*start_pointer, numbers);
swap_values (*small_pointer, *start_pointer, numbers);
*start_pointer++;
}
cout << "\n\nThe sorted array is:\n";
print (numbers);
cout << "\n\n";
return 0;
}
// finds and returns the index of the smallest number remaining
in
// the array
int find_small_value (int *start_pointer, int numbers [])
{
int *small_pointer, // smallest index to be returned
index; // current index being viewed
*small_pointer = *start_pointer;
// look at each element
for (index = *start_pointer + 1; index < size; index++)
// remember index of smaller value
if (numbers [index] < numbers [*small_pointer])
*small_pointer = index;
return *small_pointer;
}
// swap the values in the array at indexes index1 and
index2
void swap_values (int *const pointer_value1, int *const
pointer_value2, int numbers [])
{
int swapper;
swapper = *pointer_value1;
*pointer_value1 = *pointer_value2;
*pointer_value1 = swapper;
}
// prints the array in nice format, 10 numbers per line
void print (int numbers [])
{
int on_line, // number of values printed on the line
index; // index of current number being printed
on_line = 0;
// print each element in the array
for (index = 0; index < size; index++)
{
cout << setw (5) << numbers [index];
on_line++;
// if 10 numbers have been printed on the line
// go to next line
if (on_line == 10)
{
cout << "\n";
on_line = 0;
}
}
}