问题描述
我正在学习插入代码的机制。这是原始的插入代码算法,如以下几个站点所述:
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 (将#修改为@)