最好给个网址什么的。。。
//二分法排序
var arr = [15,27,36,53,69,18];
function sort2(arr) {
var len = arr.length,i, j, tmp, low, high, mid, result;
// 赋予数组副本
result = arr.slice(0);
for(i = 1; i < len; i++){
tmp = result[i];
console.log(tmp)
low = 0;
high = i - 1;
while(low <= high){
mid = parseInt((low + high)/2, 10);
if(tmp < result[mid]) high = mid - 1;//前半段查找
else low = mid + 1;//后半段查找
}
for(j = i - 1; j >= high+1; j--){
console.log(j)
result[j+1] = result[j];
console.log(result[j+1])
}
result[j+1] = tmp;
console.log(tmp)
}
return result;
}
console.log(sort2(arr));
</script>
其中:for(j = i - 1; j >= high+1; j--){
console.log(j)
result[j+1] = result[j];
console.log(result[j+1])
}是什么意思 能简单讲一下吗??
这代码格式……
谁教你这么写的……打死ta……
我百度了下啥叫二分排序
百度百科里的内容如下:
“二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。”
把你贴出来的代码格式排整齐点,用上面这段话做注释
就这样。
不是代码本身的问题,而是其中算法的逻辑,
你可以先不看代码,把这个算法的思路(就是百科里那段话)想清楚