Pagini recente » Cod sursa (job #2717357) | Cod sursa (job #2457796) | Cod sursa (job #2528516) | Cod sursa (job #2645402) | Cod sursa (job #1019662)
#include <stdio.h>
#include <stdlib.h>
void quickSort(int numbers[], int array_size)
{
q_sort(numbers, 0, array_size - 1);
}
void q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
q_sort(numbers, left, pivot-1);
if (right > pivot)
q_sort(numbers, pivot+1, right);
}
int main()
{
int p[20],n,i;
FILE *f=fopen("algsort.in","r"),*g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
for (i=0;i<n;i++)
fscanf(f,"%d",&p[i]);
quickSort(p,n);
for (i=0;i<n;i++)
fprintf(g,"%d ",p[i]);
return 0;
}