#include <stdio.h>
void partition(int a[],int p,int r)
{
int q;
if(p<r)
{
q=quicksort(a,p,r);
partition(a,p,q-1);
partition(a,q+1,r);
}
}
int quicksort(int a[],int p,int r)
{
int pivot=p;
int f=p,temp;
int l=r;
while(f<l)
{
while(a[f]<=a[pivot])
f++;
while(a[l]>a[pivot])
l--;
if(f<l)
{
temp=a[f];
a[f]=a[l];
a[l]=temp;
}
}
temp=a[pivot];
a[pivot]=a[l];
a[l]=temp;
return l;
}
int main(void)
{
// your code goes here
int n;
scanf("%d",&n);
int a[n];
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
partition(a,0,n-1);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
Это алгоритм для быстрой сортировки моего вопроса: требуется ли больше времени, чем O (nlogn).Какова временная сложность следующей программы?
http://en.wikipedia.org/wiki/Quicksort –
Мой вопрос заключается в нахождении временной сложности данного кода, но не быстрой сортировки? –
@gaborous [1]: (http://geeksquiz.com/quick-sort/) код в этой ссылке и мой код имеют одинаковую сложность времени –