首页 > 编程语言 >PHP面试常用的几种算法(建议收藏)

PHP面试常用的几种算法(建议收藏)

时间:2024-01-15 11:05:27浏览次数:29  
标签:function count arr keysvalue 面试 算法 key array PHP

1.冒泡排序,对像可以是数组

function bubble_sort($array){   
    $count = count($array);
    if ($count <= 0) {
        return false;
    }
    for($i=0; $i<$count; $i++){
        for($j=$count-1; $j>$i; $j--){
            if ($array[$j] < $array[$j-1]){
                $tmp = $array[$j];
                $array[$j] = $array[$j-1];
                $array[$j-1] = $tmp;
	    }
	}
    }
    return $array;
}

2.快速排序,对象可以是数组

function quick_sort($array) {
    if (count($array) <= 1){
        return $array;
    }
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i=1; $i<count($array); $i++){
        if ($array[$i] <= $key){
	    $left_arr[] = $array[$i];
	}else{
	    $right_arr[] = $array[$i];
	}
    }
    $left_arr = quick_sort($left_arr);
    $right_arr = quick_sort($right_arr);
    return array_merge($left_arr, array($key), $right_arr);
}

3.二分查找,查找数组中某个元素

function bin_sch($array, $low, $high, $k){
    if ($low <= $high){
        $mid = intval(($low+$high)/2);
	if ($array[$mid] == $k){
	    return $mid;
	}elseif ($k < $array[$mid]){
	    return bin_sch($array, $low, $mid-1, $k);
	}else{
	    return bin_sch($array, $mid+1, $high, $k);
	}
    }
    return -1;
}

4.顺序查找,查找数组中某个元素

function seq_sch($array, $n, $k){
    $array[$n] = $k;
    for($i=0; $i<$n; $i++){
        if($array[$i]==$k){
            break;
	}
    }
    if ($i<$n){
        return $i;
    }else{
        return -1;
    }
}

写一个二维数组排序算法函数,可以调用php内置函数,能够具有通用性

function array_sort($arr, $keys, $order=0) {
    if (!is_array($arr)) {
        return false;
    }
    $keysvalue = array();
    foreach($arr as $key => $val) {
        $keysvalue[$key] = $val[$keys];
    }
    if($order == 0){
        asort($keysvalue);
    }else {
        arsort($keysvalue);
    }
    reset($keysvalue);
    foreach($keysvalue as $key => $vals) {
        $keysort[$key] = $key;
    }
    $new_array = array();
    foreach($keysort as $key => $val) {
        $new_array[$key] = $arr[$val];
    }
        return $new_array;
}


标签:function,count,arr,keysvalue,面试,算法,key,array,PHP
From: https://blog.51cto.com/u_16518419/9249964

相关文章

  • c#面试题及答案(二)
    c#面试题及答案(二)  注意:红色字体部分是本人更正了网络上的一些错误答案。 2.列举ASP.NET页面之间传递值的几种方式。答.1).使用QueryString,如....?id=1;response.Redirect()....                 2).使用Session变量         ......
  • 吴师兄学算法day07 167. 两数之和 II - 输入有序数组
    题目:167. 两数之和II-输入有序数组易错点:下标为1开始我的代码:classSolution:deftwoSum(self,numbers:List[int],target:int)->List[int]:right=len(numbers)-1left=0whileleft<right:ans=numbers[left]......
  • 怎么在python中改进lightgbm 算法
    改进LightGBM算法通常涉及一系列步骤,这取决于你的数据集、问题的特点以及已有模型的性能。以下是一些建议:数据预处理和特征工程:处理缺失值:使用适当的方法填充或删除缺失值。异常值处理:检测并处理异常值,以确保模型对数据的噪声具有鲁棒性。特征缩放:确保特征在相似的范围内,可以......
  • thinkphp 6 消息队列 (转载)
    1.安装think-queuecomposerrequiretopthink/think-queue 2.配置消息队列,将config/queue.php将’default’=>‘sync’改为’default’=>‘redis’,使用Redis驱动 如选择database,需创建表CREATETABLE`prefix_jobs`(`id`int(11)NOTNULLAUTO_INCREMENT,`q......
  • 【算法】【线性表】【链表】K 个一组翻转链表
    1 题目给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例1:......
  • BM25(Best Matching 25)算法基本思想
      BM25(BestMatching25)是一种用于信息检索(InformationRetrieval)和文本挖掘的算法,它被广泛应用于搜索引擎和相关领域。BM25基于TF-IDF(TermFrequency-InverseDocumentFrequency)的思想,但对其进行了改进以考虑文档的长度等因素。一.基本思想  以下是BM25算法的基本思想......
  • #yyds干货盘点# LeetCode程序员面试金典:移除盒子
    题目给出一些不同颜色的盒子boxes,盒子的颜色由不同的正数表示。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续k个盒子(k>=1),这样一轮之后你将得到k*k个积分。返回你能获得的最大积分和。 示例1:输入:boxes=[1,3,2,......
  • #yyds干货盘点# LeetCode程序员面试金典:整数替换
    题目给定一个正整数n,你可以做如下操作:如果n是偶数,则用n/2替换n。如果n是奇数,则可以用n+1或n-1替换n。返回n变为1所需的最小替换次数。 示例1:输入:n=8输出:3解释:8->4->2->1示例2:输入:n=7输出:4解释:7->8->4->2->1或7->6-......
  • 吴师兄学算法day07 双指针 125. 验证回文串
    题目:125. 验证回文串易错点:isaplha()isdigit()lower()要熟悉,挺有用的。我的代码:classSolution:defisPalindrome(self,s:str)->bool:ans=''foriins:ifi.isalpha()ori.isdigit():ans+=i.lower()#......
  • 2024/1/14 算法笔记
    1.图论的反向建边一般问题:有向图的多个起点到一个终点的最短距离是最短路的变式。我们只需要把图的箭头反向(正向变逆向,逆向变正向)矩阵:mp[u,v]=cost---->mp[v,u]=cost邻接表也是类似的方法[P2853USACO06DEC]CowPicnicS-洛谷|计算机科学教育新生态(luo......