了解插入排序算法

问题描述

我正在学习插入代码的机制。这是原始的插入代码算法,如以下几个站点所述:

for (int i = 0; i < a.length; i++) {
    int key = a[i];
    int j = i;

    while (j > 0 && a[j-1] > key) {
        swap(a,j,j - 1);
        j--;
    }

    a[j] = key;
}

问题是在学习其工作原理时,我意识到不使用键的下一个代码的作用完全相同:

for (int i = 0; i < a.length; i++) {
    int j = i;

    while (j > 0 && a[j-1] > a[j]) {
        swap(a,j - 1);
        j--;
    }
}

我的问题是,为什么原始算法需要它们 key ?在某些边缘情况下是否需要不考虑第二种算法?如果是这样,他们将处于哪种边缘情况? 经过一些测试,两种算法的结果执行了相同数量的交换,因此我无法弄清楚必须使用键变量有什么区别。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)