devo fare un algoritmo che dato un array di interi lungo n e 2 interi x e y mi ritorni un array che ha come primi elementi solo elementi <x e come ultimi elementi solo elementi >y in mezzo quelli compresi tra x e y estremi inclusi.
io ho ideato un algoritmo che mi pare corretto, ma vorrei conferme...
codice:
void scambia(int *a,int i, int j){
int t;
t=a[i];
a[i]=a[j];
a[j]=t;
}//end scambia
void tripartizione(int *a,int x, int y,int n){
int i,j,k;
i=j=0;
k=n-1;
while(j<=k){
if(j<i)
j=i;
else
if(a[j]<x){
scambia(a,i,j);
i++;
}else
if(a[j]>y){
scambia(a,k,j);
k--;
}else
j++;
}//end while
}//end tripartisci
grazie per eventuali consigli o suggerimenti.