算法学习笔记
1.
比较容易理解的“冒泡排序”的写法:
C语言版:
JS版:
2.
快速排序:
JS版:
3.
使用“尾插法”和“头插法”建立链表:
4.
使用头插法或者尾插法对单链表进行归并:
5.
利用栈匹配括号的算法:
6.
KMP算法:
7.
二叉树的遍历算法:
8. 二叉排序树BST
- 查找关键字的算法:
- 插入关键字的算法
- 二叉排序树的构造算法
9. 数组循环左移或右移
1 function reverse(arr, left, right) { 2 var i, j, temp; 3 for (i = left, j = right; i < j; ++i, --j) { 4 temp = arr[i]; 5 arr[i] = arr[j]; 6 arr[j] = temp; 7 } 8 } 9 10 // 数组循环左移m位 11 function f1 (arr, m) { 12 rear = arr.length - 1; 13 reverse(arr, 0, m - 1); 14 reverse(arr, m, rear); 15 reverse(arr, 0, rear); 16 } 17 18 // 数组循环右移m位 19 function f2 (arr, m) { 20 rear = arr.length - 1; 21 reverse(arr, 0, rear); 22 reverse(arr, 0, m - 1); 23 reverse(arr, m, rear); 24 }
10.
1 // 斐波那契数列函数 2 function fibonacci(n){ 3 if(n==1||n==2) 4 return 1; 5 return fibonacci(n-1)+fibonacci(n-2); 6 } 7 8 function fibonacci(n) { 9 if (n === 1 || n === 2) 10 return 1; 11 12 var a = 1, b = 1, t = 0; 13 while (n > 2) { 14 t = b; 15 b = a + b; 16 a = t; 17 --n; 18 } 19 return b; 20 }
11.
1 // 题目描述 2 3 // 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 4 // 输入例子: 5 // removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2) 6 7 // 输出例子: 8 // [1, 3, 4] 9 10 function removeWithoutCopy(arr, item) { 11 for(var i=0;i < arr.length;i++){ 12 if(arr[i] == item){ 13 arr.splice(i,1); 14 i--; 15 } 16 } 17 return arr; 18 }
...