Pagini recente » Cod sursa (job #174216) | Cod sursa (job #746745) | Cod sursa (job #2523398) | Cod sursa (job #731188) | Cod sursa (job #179351)
Cod sursa(job #179351)
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
int c=0;
void q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
if(left != right)
{
int aux = numbers[left], randompoz = left+ rand() % (left - right);
numbers[left] = numbers[randompoz];
numbers[randompoz] = aux;//++c;
}
pivot = numbers[left];//++c;
while (left<right)
{
while((numbers[right]>=pivot)&&(left<right))
right--;
if(left!=right)
{++c;
numbers[left] = numbers[right];
left++;
}
while((numbers[left] <= pivot) && (left < right))
left++;
if(left != right)
{
numbers[right] = numbers[left];
right--;++c;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;++c;
if(left < pivot)
{q_sort(numbers, left, pivot-1);++c;}
if(right > pivot)
{q_sort(numbers, pivot+1, right);++c;}
}
int main()
{
freopen("litere.in","r",stdin);
freopen("litere.out","w",stdout);
int N[10000];int y,n;
scanf("%d",&y);
scanf("%c",&n);
for(int i=0;i<y;++i)
scanf("%c",&N[i]);
q_sort(N,0,y-1);
//for(int i=0;i<y;++i)
// printf("%c",N[i]);
printf("%d",c);
return 0;
}