var combSort = function(array){ var gap = array.length; do{ gap = gap * 10 / 13 if(gap === 9 || gap === 10) gap = 11 if(gap < 1){ gap = 1 } var swapped = false; for(var i=0;i<array.length-gap;i++){ var j = i + gap if(array[i]>array[j]){ var temp = array[i]; array[i] = array[j]; array[j] = temp; test(array) swapped = true } } if(gap == 1 && !swapped){ break; } }while(1); }
<script type="text/javascript" charset="utf-8">
window.onload = function(){
var assert ,item,test = function(str){
if(!assert){
assert = document.createElement("ol");
assert.i = 0;
item = document.createElement("li");
document.body.insertBefore(assert,null);
}
var li = item.cloneNode(false);
assert.appendChild(li);
li.innerHTML = str;
assert.i++;
li.style.backgroundColor = assert.i%2 === 1? "#e6e6e6" : "#D0E4FC";
};
var combSort = function(array){
var gap = array.length;
do{
gap = gap * 10 / 13
if(gap === 9 || gap === 10)
gap = 11
if(gap < 1){
gap = 1
}
var swapped = false;
for(var i=0;i<array.length-gap;i++){
var j = i + gap
if(array[i]>array[j]){
var temp = array[i];
array[i] = array[j];
array[j] = temp;
test(array)
swapped = true
}
}
if(gap == 1 && !swapped){
break;
}
}while(1);
}
var a = [4,10,9,8,7,6]
test("原数组 "+a)
combSort(a);
}
</script>
</head>
<body>
</body>
</html>