Open Genzhen opened 3 years ago
优点:大问题转化为小问题,可以减少代码量,同时代码精简,可读性好;
缺点:就是递归调用浪费了空间,而且递归太深容易造成堆栈的溢出。
优点:代码运行效率好,因为时间只因循环次数增加而增加,而且没有额外的空间开销;
缺点:代码不如递归简洁
function swap(array, i, j){
const temp = array[i]
array[i] = array[j]
array[j] = temp
}
function bubble(array){
let length = array.length
for(let i = length-1; i>0; i--){
for(let j=0; j<i; j++){
console.log('bubble', j, j+1, array)
if(array[j] < array[j+1]){
swap(array, j, j+1)
}
}
}
return array
}
var str = [1, 2, 3, 4]
console.log(bubble(str))
function bubbles(array, i = array.length-1, j = 0){
if(i===1){
return array
}
if(j > i){
j = 0
i--
}
console.log(array, i, j)
if(array[j] < array[j+1]){
swap(array, j, j+1)
}
return bubbles(array, i, j+1)
}
var str = [1, 2, 3, 4]
console.log(bubbles(str))
扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。