我的应用程序中有这些排序算法,我想跟踪受影响的值,或者在排序过程中交换的值。我想强调它们。
我已经解决了冒泡排序和选择排序的这个问题,但不知何故我无法让它与插入排序和外壳排序一起使用。
这是我想要做的事情的小提琴:
如您所见,在迭代的最后一部分,这更像是插入排序,所以我不会问如何在插入排序中进行。最大的问题是迭代的第一部分、第二部分、第三部分,因为它没有任何意义。在迭代的最后一部分。我也强调了不交换的值。
我该如何纠正这一点。谢谢!这是错误的代码:
shell: function() {
var list = anada.vars.$list;
$.each(list, function(key, value){
if (!isNaN(list[key])) {
list[key] = parseInt(list[key]);
} else {
}
});
var n = list.length;
var increment = Math.floor(n / 2);
var i;
while (increment > 0) {
var unsorted = list;
for (i = increment; i < n; i++) {
var temp = list[i];
var j = i;
while (j >= increment && list[j - increment] > temp) {
list[j] = list[j - increment];
j -= increment;
}
list[j] = temp;
var rows = '<tr>';
for (ctr = 0; ctr < unsorted.length; ctr++) {
if (list[ctr] !== unsorted[ctr]) {
rows += '<td class="affected">' + list[ctr];
} else {
rows += '<td>' + list[ctr];
}
}
anada.vars.$elements.push(rows);
}
increment = Math.floor(increment / 2);
var row = '<tr>';
anada.app.generateIterationList(list);
}
anada.app.generateTable('result-shell', 'Result of Shell Sort');
},
我尝试按照下面的答案进行操作,但我无法正确回答,我错过了什么?