Untitled

 avatar
unknown
plain_text
2 years ago
1.1 kB
4
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...