在shell排序中为受影响的值添加样式?

时间:2013-03-08 06:37:13

标签: javascript algorithm sorting visualization shellsort

我将shell排序算法实现到这样的应用程序:

shell: function() {
    var list = anada.vars.$list;
    for (i = 0; i < list.length; i++) {
        list[i] = parseInt(list[i], 10);
    }
    var n = list.length;
    var increment = Math.floor(n / 2);
    var i;        

    while (increment > 0) {
        for (i = increment; i < n; i++) {
            var temp = list[i];
            var j = i;
            var affectedOne = j;
            var affectedTwo;
            while (j >= increment && list[j - increment] > temp) {
                list[j] = list[j - increment];
                j -= increment;
            }
            list[j] = temp;
            var rows = '<tr>';
            for (counter = 0; counter < n; counter++) {
                if (counter > j - increment && counter < i + 1 && counter % increment == 0) {
                    rows += '<td class="affected">' + list[counter];
                } else {
                    rows += '<td>' + list[counter];
                }
            }
            anada.vars.$elements.push(rows);
        }
        increment = Math.floor(increment / 2);
        var row = '<tr>';
        $.each(list, function(n, val) {
            row += '<td class="iteration">' + val;
        });
        anada.vars.$elements.push(row);

    }
    $('.result-content').find('table').empty();
    $.each(anada.vars.$elements, function(n, val) {
        $('.result-content').find('table').append(val);
    });
    anada.vars.$elements = [];

},

问题是这样的:

  1. 排序的第一部分仅突出显示'21',它不能突出显示因为,15和21没有从条目中改变其位置..列表条目是 15,14,0,34,2,44,21,6,7,12,5,34,20。
  2. 如果索引0大于索引7,这是列表总数的一半+ 1,它们将改变位置,

    这是配对:

    第一次迭代: 15-21, 14-6, 0-7, 34-12, 2-5, 44-34, 6-20

    我想强调的是那些只会改变立场的人。

    first part of the sorting after some iterations, the ending part is like a insertion sort

    我的错误是什么。

0 个答案:

没有答案