I'm trying to count the number of correct (sorted) positions in an array.

example:

10 positions are correct.Code:`1 2 3 4 5 6 7 8 9 10`

example2:

9 positions are correct.Code:`1 2 3 4 5 6 7 8 9 0`

example3:

0 positions are correct.Code:`10 9 8 7 6 5 4 3 2 1`

example4:

1 positions are correct.Code:`10 9 8 7 6 5 4 3 2 15`

The code i'm using now for this doesn't work:

So, my counting algorithm (in red) increases by one, if a value is less than the value in front of it.Code:`#include <iostream>`

using namespace std;

int PickBestSort(int array1[], int size);

int PrintArray(int array1[], int size);

int main()

{

int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

int array2[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};

int size = 10;

PickBestSort(array1, size);

PrintArray(array1, size);

cout << endl;

return 0;

}

int PickBestSort(int array1[], int size)

{

float percentSorted = 0;

for(int i = 0; i < (size-1) ; i++)

{

//Checks how sorted the array is. The higher "percentSorted" is, the more sorted the array is.

if (array1[i] <= array1[i+1])

{

percentSorted++;

}

}

cout << endl << "Percent Sorted: " << percentSorted*10 << endl;

cout << endl << percentSorted << " out of " << size << " positions are correct." << endl;

//If 20% or less of the array is sorted, then it is considered to be reverse sorted.

if ( percentSorted <= 20)

{

cout << endl << "The array is reverse sorted or close to being reverse sorted." << endl;

}

//If 80% or more of the array is sorted, then it is considered to be already sorted.

else if ( percentSorted >= 80)

{

cout << endl << "The array is already sorted or close to being already sorted." << endl;

}

//If between 20% and 80% of the array is sorted, then it is considered to be random.

else

{

cout << endl << "The array is random or close to being random." << endl;

}

return 0;

}

int PrintArray(int array1[], int size)

{

cout << endl;

for (int j = 0; j < size; j++)

{

cout << array1[j];

cout << " ";

}

return 0;

}

Right now, in example 1, my program will only say 9 positions are correct, instead of 10. This is because the last value in the array isn't compared to anything. However, examples 3 and 4 will read correctly. If if change the algorithm to where examples 1 and 2 work, then 3 and 4 won't work (they will say one more position is correct than really is). I can't figure out a counting algorithm that will work for all cases.

I am only suppose to run through the array once to analyze it, and i can't change the array, because it will mess up the sorting algorithm later on in the program, and i don't think i'm suppose to change the array once the numbers are read into it.

If you are wondering, my program is suppose to analyze an array, and choose a sorting algorithm based on efficiency. I'm trying to determine how sorted the array is, so i can best choose the most efficient sort.

Any ideas?

Thanks.