我正在阅读本教程,分析选择排序算法(personal.denison.edu/~kretchmar/272/SelectionSortAnalysis.pdf)。我花了很多时间来理解算法分析,并没有完全成功。
如果查看PDF,有一些'时间'与c3,c4和c5相关联。我不知道为什么作者添加了求和符号,为什么他选择了顶部和底部索引以及为什么他在第一次求和后选择'(i + 1)'。我理解求和符号是一种表达一组数字之和的紧凑方式......但我似乎无法完成这个难题。
谢谢
答案 0 :(得分:1)
1)他将外部循环中的值相加(第1行)。这就是他使用i(外部循环的索引变量)的原因。
2)传统的做法是使用小于结束值的起始值来编写Σ表达式。但是,在这种情况下,内部循环对某些i执行的次数是n - i。当i为1(循环开始)时,内循环将执行n - 1次,当我在外循环结束时达到n - 1时,内循环将执行1次(n - ( n - 1))。所以你可能想把它写成总和(i = n-1 - > 1),但正如我所说的传统是将它从最小写到最大。
3)循环执行i次,但循环测试执行i + 1次:i次成功,一次失败,终止循环。因此,循环体内求和的值为i,但循环终止测试本身的总和值(即for语句)为i + 1.