Untitled
unknown
plain_text
3 years ago
1.1 kB
5
Indexable
#include <stdio.h>
int partition (int a[] , int l , int u)
{
int pivot=a[0];
int cnt=0;
for (int i=l+1;i<u;i++)
{
if (pivot>a[i])
{
cnt++;
}
}
int temp = a[l];
a[l]=a[cnt+l];
a[l+1]=temp;
int i=l;
int j=u;
while (i<l-cnt&&j>l+cnt)
{
if(a[i]<pivot)
{
i++;
}
else if (a[j]>pivot)
{
j--;
}
else if(a[i]>pivot&&a[j]<pivot)
{
int temp = a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
}
}
return l+cnt;
}
void quicksort(int a[], int l , int u){
if (l<u);
{
int pivot = partition (a,l,u);
quicksort(a,l,pivot-1);
quicksort(a,pivot+1,u);
}
}
int main()
{
int i , j , n , a[10];
scanf("%d" , &n);
for ( i=0;i<n; i++)
{
scanf("%d" , &a[i]);
}
quicksort(a,0,n-1);
for(i=0;i<n;i++)
{
printf("%d ", a[i]);
}
}Editor is loading...