`
qingfengjushi1
  • 浏览: 139117 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

选择排序时间复杂度计算浅析

 
阅读更多
选择排序时间复杂度计算浅析:
代码:
void select_sort(int a[], int n) {
   for (i = 0; i < n - 1; ++i) {
      j = i;
      for (k = i + 1; k < n; ++k) {
         if (a[k] < a[j]) j = k;
         if (j != i) a[j] <--> a[i];
      }
   }
} // select_sort

上述程序的原操作有赋值、比较及交换,显然基本操作应该取比较。总的比较次数显然是:(n-1)+(n-2)+(n-3)+...+1这是一个等差数列之和,要算出求和公式的话可以这样:

(n-1)+(n-2)+(n-3)+......+3+2+1=Sn
1+2+3+......+(n-3)+(n-2)+(n-1)=Sn

上边两个式子加起来2Sn=n+n+n+......+n+n+n(一共n-1个n)所以得出Sn=n(n-1)/2,
Sn=n^2-n/2和n^2成正比,因此选择排序的时间复杂度为O(n^2)。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics