Pagini recente » Cod sursa (job #1981799) | Cod sursa (job #787570) | Cod sursa (job #3225546) | Cod sursa (job #797569) | Cod sursa (job #114941)
Cod sursa(job #114941)
#include <stdio.h>
#define FIN "litere.in"
#define FOUT "litere.out"
#define N_MAX 10000
char a[N_MAX];
int n,c;
void quick(int prim,int ultim,char a[N_MAX])
{
int i,j;
char pivot,x;
i=prim;j=ultim;
pivot = a[(prim + ultim) / 2];
do{
while(a[i]<pivot) i++,++c;
while(a[j]>pivot) j--,++c;
if(i<=j) {
++c;
x=a[i];a[i]=a[j];a[j]=x;
i++;j--;
};
} while(i<=j);
if(prim<j) quick(prim,j,a);
if(i<ultim) quick(i,ultim,a);
}
void quicksort(int n,char a[N_MAX])
{
quick(0,n-1,a);
}
int main()
{
FILE * fin,*fout;
fin = fopen(FIN,"r");
fout = fopen(FOUT,"w");
fscanf(fin,"%d %s",&n,a);
quicksort(n,a);
fprintf(fout,"%d\n",c);
return 0;
}