quicksort排序的时间复杂度是多少啊?
如题,谢谢了
2013-03-23 15:59
2013-03-23 17:08
2013-03-23 17:14
程序代码:#include <iostream>
using namespace std;
int main()
{
int a[10],b[100]={0},c[100];//a储存原数组,b存储排序后数组,c存储个数
int n,i,j;
int min,max;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
min=a[0];
max=a[0];
for(i=1;i<n;i++)//得到数组中的最小值和最大值
{
if(a[i]<min)
min=a[i];
if(a[i]>max)
max=a[i];
}
b[0]=min;
c[0]=0;
for(i=1;i<n+1;i++)//排序思路:找到最小值,把比最小值大N的数存到B[N]中
{
c[i]=1;//保证B数值里每个非0值最少有一个输出
j=a[i-1]-b[0];
if(b[j]==a[i-1])
{
b[j]=a[i-1];
c[j]++;//如果有多个相同的非零值,着个数加一
}
b[j]=a[i-1];
}
for(i=0;i<=max-min+1;i++)
{
if(b[i]!=0)
while(c[i]>0)
{
cout<<b[i]<<" ";
c[i]--;
}
else
continue;
}
return 0;
}我觉得这个排序可以使时间复杂度为N,就是空间复杂度可能会很大,所以可以帮我看下怎么储存会好点吗?谢谢了
2013-03-23 18:23
2013-03-23 18:24

2013-03-23 18:48

2013-03-23 18:50
2013-03-23 18:58
2013-03-23 20:26

2013-03-23 20:54