冒泡排序
- 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
- 直观表达,每一趟遍历,将一个最大的数移到序列末尾。
算法描述
- 比较相邻的元素,如果前一个比后一个大,交换之。
- 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
- 第二趟将第二大的数移动至倒数第二位
function arr_sort(data) {
var temp
for(var i = 0; i<data.length;i++) {
for(var j = 0; j<data.length; j++) {
if(data[j]) > data[j + 1]) {
swap = data[j + 1]
data[j] = data[j + 1]
data[j + 1] = swap
}
}
}
}
arr_sort(arr)
递归
递归就是就是在一个函数里面调用函数自己本身
优缺点
优点:
能够将多次重复计算的过程用一小段代码表示出来,让代码看起来更为简洁
缺点:
- 递归是一个一次或多次调用函数本身的过程,而在函数调用时,都要在栈内存中分配空间来存储变量、参数、地址等,这些都回消耗时间和空间,从而导致执行效率低下。
- 递归存在很多重复计算的过程,有可能会出现重叠计算,这样重复的计算也会导致效率低下。
//递归求1-100的和
function fn(num) {
console.log(num)
if (num == 1) {
return num
}
return num + fn(num - 1)
}
console.log(fn(100))
- 注:一定要要写结束递归的条件,否则就会内存溢出