java - 插入排序基本操作计数

标签 java insertion-sort

我有一个作业,使用算法的实证分析来比较插入排序和合并排序,并且我使用基本操作计数来衡量效率。 我的问题:对于相同的输入大小,每次操作计数都相同,这正常吗? (知道我正在生成随机值,因此每次运行的值都不同)

这是我的方法(在java中):

public static void insertionSort(int[] randomArray) {
    int key, j;
    for (int i = 1; i < randomArray.length; i++) {
        key = randomArray[i];
        j = i - 1;
        increasCounter();
        while (j >= 0 && randomArray[j] > key) {
            randomArray[j + 1] = randomArray[j];
            j--;
        }
        randomArray[j + 1] = key;
    }
}

其中基本操作是比较“randomArray[j] > key”

最佳答案

我认为你也应该只在这段代码中增加计数器

while (j >= 0 && randomArray[j] > key) {
        increaseCounter();
        randomArray[j + 1] = randomArray[j];
        j--;
    }

我们计算的效率是计算程序在完成之前执行的步骤数,之前的代码只计算for代码内循环的次数,不计算while代码内的循环,并且只计算它计算数组的数量

关于java - 插入排序基本操作计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353737/

相关文章:

java - proguard 混淆时只保留函数名

java - 如何在不牺牲性能的情况下创建 Google Plus 应用程序的布局?

java.security.spec.InvalidKeySpecException : java. security.InvalidKeyException: key 格式无效

java - 如何添加鼠标松开事件?

Python 3 : Insertion Sort comparisons counter

java - 插入排序,比较次数

java - 在 jsp 上设置 Ajax 响应不起作用

java - 基本的插入排序优化使代码变慢

algorithm - 插入排序——阅读麻省理工学院算法简介时遇到的麻烦