تابع کوئیک سورت (Q-sort)
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
/************************************/
void quicksort(int* list,int min, int max)
{
int *small;
int *large;
int i,s=0,l=0,k;
int pivot,pivotpos;
if(max <= min)
return;
pivot = list[min];
small=malloc(sizeof(int)*(max-min+1));
large=malloc(sizeof(int)*(max-min+1));
for(i = min + 1; i <= max; i++)
{
if(list[i] < pivot)
small[s++] = list[i];
else
large[l++] = list[i];
}
k=min;
for(i = 0; i < s; i++)
list[k++] = small[i];
list[k++] = pivot;
pivotpos = k - 1;
for(i = 0; i < l; i++)
list[k++] = large[i];
free(small);
free(large);
quicksort(list,min,pivotpos-1);
quicksort(list,pivotpos+1,max);
}
/************************************/
void main()
{
int list[10];
int i;
clrscr();
printf("\nPlease enter 10 digits :\n");
for(i=0;i<10;i++)
{
printf("Array[%d]=",i+1);
scanf("%d\n",&list[i]);
}
printf("\nApplying quicksort...\n");
quicksort(list,0,10);
for(i=0;i<10;i++)
{
printf("%d ",list[i]);
}
getch();
}
/************************************/