Untitled
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...