// sortArray01.cc  P. Conrad for CISC220 06J

#include <iostream>
using namespace std;

#include <cassert>

int findPositionOfMax(int a[], int size)
{
  int positionOfMax = 0;
  for (int i=1; i<size; i++)
    {
      if (a[positionOfMax] < a[i] )
	positionOfMax = i;
    }
  return positionOfMax;
}

void swap(int a[], int i, int j)
{
  int temp = a[i];
  a[i] = a[j];
  a[j] = temp;
}


void sortArray(int a[], int n)
{

  for (int i=n; i>0; i--)
    {
      int j = findPositionOfMax(a,i);
      swap(a,j,i-1);
    }

  return;

}

void printArray(int a[], int n)
{
  for (int i=0;i<n;i++)
    {
      cout << a[i];
      if (i<n-1)
	cout << ",";
      else
	cout << endl;
    }

}

int main(void)
{
  int nums[] = {13, 2, 6, 4, 2, -3, 11};
  int moreNums[] = {2, 2, 6, 4, 2, 999, 11};

  swap(nums,1,2);
  
  cout << "nums[1] should be 6---nums[1]=" << nums[1] << endl;
  cout << "nums[2] should be 2---nums[2]=" << nums[2] << endl;

  cout << "findPositionOfMax(nums,7) should be 0---it actually is " << 
    findPositionOfMax(nums,7) << endl;

  cout << "findPositionOfMax(moreNums,7) should be 5---it actually is " << 
    findPositionOfMax(moreNums,7) << endl;

  sortArray(nums,7);

  cout << "nums[0] should be -3---nums[0]=" << nums[0] << endl;
  cout << "nums[6] should be 13---nums[6]=" << nums[6] << endl;


  sortArray(moreNums,7);

  cout << "moreNums[0] should be 2---moreNums[0]=" << moreNums[0] << endl;
  cout << "moreNums[6] should be 999---moreNums[6]=" << moreNums[6] << endl;

  cout << "nums=";
  printArray(nums,7);

  cout << "moreNums=";
  printArray(moreNums,7);

  return 0;

}



