Aiuto urgente con ordinamento paletta

Ho scritto questo programma per risolvere il problema dell’ordinamento paletta:

#include <bits/stdc++.h>
using namespace std;
long long paletta_sort(int N, int V[]) 
{
    long long int conta=0;
    bool ord=true;
    for (int i=0;i<N-1;i++)
    {
        if (V[i]>V[i+1])
        {
            ord=false;
            break;
        }
    }
    if (ord)
        return conta;
    int i=0;
    while (!ord)
    {
        for (i;i<(N-2);i++)
        {
            bool trip=(V[i]>V[i+1]&&V[i+1]>V[i+2]);
            if (trip)
            {
                swap(V[i],V[i+2]);
                swap(V[i],V[i+1]);
                conta=conta+1;
            }
        }   
        ord=true;
        for (int i=0;i<N-1;i++)
        {
            if (V[i]>V[i+1])
            {
                ord=false;
                break;
            }
        }
        if (ord)
            return conta;
        else 
            return -1;
    }
}

Tuttavia, riesce solo a stabilire se un vettore NON è ordinabile. Come posso risolvere?