前端算法
1.冒泡排序(Bubble Sort)
function bubbleSort(arr) {
const len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}
const array = [5, 3, 8, 4, 2];
console.log(bubbleSort(array)); // Output: [2, 3, 4, 5, 8]
2.二分查找(Binary Search)
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
const array = [2, 4, 6, 8, 10];
console.log(binarySearch(array, 8)); // Output: 3
3.二叉树的遍历
class TreeNode {
constructor(val) {
this.val = val;
this.left = null;
this.right = null;
}
}
function preOrderTraversal(root) {
const result = [];
function traverse(node) {
if (node === null) {
return;
}
result.push(node.val);
traverse(node.left);
traverse(node.right);
}
traverse(root);
return result;
}
const tree = new TreeNode(1);
tree.left = new TreeNode(2);
tree.right = new TreeNode(3);
console.log(preOrderTraversal(tree)); // Output: [1, 2, 3]