Pagini recente » Cod sursa (job #1644663) | Cod sursa (job #2578982) | Cod sursa (job #15332) | Cod sursa (job #1386706) | Cod sursa (job #179343)
Cod sursa(job #179343)
#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;
int N[10000];int y;
scanf("%d",&y);
for(int i=0;i<y;++i)
scanf("%c",&N[i]);
q_sort(N,1,y);
//for(int i=1;i<y;++i)
// printf("%c",N[i]);
printf("%d",c+1);
return 0;
}