for (int index = 1; index < n; index *= 2) {
int counter = 0;
while (counter < n) {
counter++;
}
}
根据n的函数,在Big表示法中确定其最佳和最坏的运行时。
我认为最坏的情况是n*log(n),但我不确定最好的情况是什么。
我们的老师没有教我们如何分析算法的运行时间,然后她想让我们报告Shell排序。
我只想知道是否有一种简单的方法可以找到像shell排序这样的算法的平均/最佳/最坏情况的性能。
//for references
class ShellSort{
void shellSort(int array[], int n){
//n = array.length
for (int gap = n/2; gap > 0; gap /= 2){
for (int i = gap; i < n; i += 1) {
int temp = array[
“弗洛伊德-沃尔”算法“和”Dijkstra的算法“”之间有什么区别,哪种算法是图中最短路径的最佳选择?
我需要计算网络中所有对之间的最短路径,并将结果保存到一个数组中,如下所示:
**A B C D E**
A 0 10 15 5 20
B 10 0 5 5 10
C 15 5 0 10 15
D 5 5 10 0 15
E 20 10 15 15 0
我目前正在大学学习一个算法单元,我似乎无法从任何人那里得到一个关于确定算法的基本操作的明确答案。我知道它可以发生在一个以上的地方,但在考虑最好的情况、一般的情况和最坏的情况时,情况会有所不同吗?
在下面的示例中,我是否正确地假设Ai = Null是最佳情况的基本操作,因为它是给出最佳执行时间的操作?
对于最坏的情况,Ai =0是基本操作吗?因为它的代码块将有最大的执行时间吗?普通的案子呢?这将是与数组的所有4个比较吗?就像我说的,我似乎无法从任何人那里得到一个明确的答案。就连我读过的教科书都非常模糊。任何帮助都将不胜感激。
for i <- 0 to n-1
if A[i] =