【发布时间】:2012-08-13 17:31:10
【问题描述】:
我已经编写了这个排序代码,它运行得很好。我想知道如何降低它的时间复杂度。
#include <iostream>
using namespace std;
void sort(int a[], int n)
{
int min, temp;
for(int i=0;i<n-1;i++)
{
min=i;
for(int j=i+1;j<n;j++)
{
if(a[min]>a[j])
{
min=j;
}
}
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
}
int main()
{
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
sort(arr,n);
return 0;
}
如果没有其他方法可以更改它,那么我是否必须更改算法?如果是,请推荐一个算法?
谢谢。
【问题讨论】:
-
这是作业吗?你有没有描述过你日常工作的复杂性?
-
自己做。这就是为什么我没有要求代码,只要求算法名称,因为它类似于作业问题.m:)
-
@MichaelBurr 只是想知道答案是否重要?
-
@Артём Царионов:我认为人们经常以不同的方式回答基于家庭作业的问题。例如,避免简单地“给出答案”或将答案更多地定位于基本面。至于表征当前例程的复杂性 - 在您了解当前情况(至少在某种程度上)之前,您如何知道您是否已经改进了一些事情?
-
@MichaelBurr 好点子,我一直不明白为什么人们关心它是否是家庭作业
标签: c++ algorithm sorting time-complexity