希尔排序(又称缩小增量排序,增量递减排序,ShellSort)的一个JavaScript实现

<html>
<script type="text/javascript">
function shellSort(array) {
    function swap(array, i, k) {
        var temp = array[i];
        array[i] = array[k];
        array[k] = temp;
    }
    var length = array.length,
        gap = Math.floor(length / 2);
    while (gap > 0) {
    	console.log("Current gap changed to be: " + gap);
        for (var i = gap; i < length; i++) {
        	console.log( "in current loop, i = " + i + " gap: " + gap);
            for (var j = i; 0 < j; j -= gap) {
            	console.log("in current loop, gap is fixed as: " + gap + " current j: " + j);
            	var left = j - gap;
            	console.log(" trying to evaluate left: " + left + " right: " + j);
            	var abapLeft = left + 1;
            	var abapRight = j + 1;
            	console.log(" the corresponding ABAP index, LEFT: " + abapLeft + " RIGHT: " + abapRight);
            	console.log(" array[left]: " + array[left] + " array[right]: " + array[j]);
                if (array[j - gap] > array[j]) {
                    swap(array, j - gap, j);
                } else {
                    break;
                }
            }
        }
        gap = Math.floor(gap / 2);
    }
    return array;
}
var input = [9,4,1,2,3,4,5];
var result = shellSort(input);
debugger;
</script>
</html>
发布了7169 篇原创文章 · 获赞 654 · 访问量 124万+

猜你喜欢

转载自blog.csdn.net/i042416/article/details/105087404
今日推荐