收集、管理和分享有用的代码片段,提高开发效率
实现归并排序算法
<?php
function mergeSort(&$arr) {
if (count($arr) <= 1) return;
$mid = count($arr) / 2;
$left = array_slice($arr, 0, $mid);
$right = array_slice($arr, $mid);
mergeSort($left);
mergeSort($right);
$arr = merge($left, $right);
}
function merge($left, $right) {
$result = [];
while (count($left) && count($right)) {
if ($left[0] <= $right[0]) {
array_push($result, array_shift($left));
} else {
array_push($result, array_shift($right));
}
}
return array_merge($result, $left, $right);
}
递归实现快速排序
<?php
function quickSort(&$arr) {
$n = count($arr);
if ($n <= 1) return $arr;
$pivot = $arr[0];
$left = $right = [];
for ($i = 1; $i < $n; $i++) {
if ($arr[$i] < $pivot) $left[] = $arr[$i];
else $right[] = $arr[$i];
}
return array_merge(quickSort($left), array($pivot), quickSort($right));
}
迭代计算斐波那契数
<?php
function fibonacci($n) {
$a = 0; $b = 1;
for ($i = 0; $i < $n; $i++) {
$temp = $a;
$a = $b;
$b = $temp + $b;
}
return $a;
}
ES6数组去重方法
const removeDuplicates = (arr) => {
return [...new Set(arr)];
};
// Usage:
const myArray = [1, 2, 2, 3, 4, 4, 5];
console.log(removeDuplicates(myArray)); // [1, 2, 3, 4, 5]
计算Levenshtein距离
<?php
function levenshtein($s1, $s2) {
$len1 = strlen($s1);
$len2 = strlen($s2);
$dp = array();
for ($i = 0; $i <= $len1; $i++) {
$dp[$i] = array();
$dp[$i][0] = $i;
}
for ($j = 0; $j <= $len2; $j++) {
$dp[0][$j] = $j;
}
for ($i = 1; $i <= $len1; $i++) {
for ($j = 1; $j <= $len2; $j++) {
$cost = ($s1[$i - 1] == $s2[$j - 1]) ? 0 : 1;
$dp[$i][$j] = min(
$dp[$i - 1][$j] + 1, // Deletion
$dp[$i][$j - 1] + 1, // Insertion
$dp[$i - 1][$j - 1] + $cost // Substitution
);
}
}
return $dp[$len1][$len2];
}
动态规划解决0/1背包问题
<?php
function knapsack($W, $wt, $val, $n) {
$kp = array_fill(0, $n + 1, array_fill(0, $W + 1, 0));
for ($i = 1; $i <= $n; $i++) {
for ($j = 1; $j <= $W; $j++) {
if ($wt[$i - 1] <= $j) {
$kp[$i][$j] = max($kp[$i - 1][$j], $val[$i - 1] + $kp[$i - 1][$j - $wt[$i - 1]]);
} else {
$kp[$i][$j] = $kp[$i - 1][$j];
}
}
}
return $kp[$n][$W];
}
高效管理您的代码片段,提高开发效率
通过关键字、语言或分类快速查找代码片段,支持模糊搜索和过滤功能
支持多种编程语言的语法高亮,使代码更加清晰易读
随时随地访问您的代码片段库,支持桌面和移动设备
浏览最受欢迎的代码分类