算法
文章平均质量分 50
黑夜开发者
CSDN领军人物,数年电商行业从业经验,历任核心研发工程师,网站技术负责人,大数据中心负责人。对系统架构,数据分析处理等大规模应用场景有丰富经验。被CSDN、阿里云社区授予博客专家称号。
展开
-
用PHP实现经典的5种排序算法
排序算法是一种将一组无序的数据元素按照某个规则(大小、字母序等)排列成有序的序列的算法。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。1.冒泡排序:比较相邻元素的大小,如果前面比后面大,则交换两个元素。通过多轮扫描,最大的元素被交换到了最后一位。2.选择排序:每次选取当前未排序部分中最小的元素,放到已排序部分的末尾。3.插入排序:将未排序部分逐个插入到已排序部分中的正确位置,使得已排序部分一直有序。原创 2023-04-21 23:37:21 · 1908 阅读 · 0 评论 -
约瑟夫问题经典算法,环形链表的运用
问题背景:据说再很久很久以前,约瑟夫及其部下被逼退到了一个山洞里面,走头无路,大家又不甘投降叛变,于是大家决定一起赴死,他们一起围成了一个圈,然后准备依次报数,当谁的数字为3的时候就自杀,后面的人从1开始依次报数,遇到3又自杀,如此循环往复,问最后一个自杀的人是谁?例如如下序列:算法分析#include <stdio.h>#include <stdlib.h>...原创 2019-11-30 11:27:44 · 366 阅读 · 1 评论 -
PHP检查字符串是否全部是中文,用于汉字姓名判断
背景当做一些电商网站的时候,会遇到很多时候购物要实名认证,对于国内的人来说,输入姓名的时候都要输入汉字。汉字而不是中文,为什么这么说。“。”这个也是中文,所以说汉字比较准确一点。分析还有一些少数民族里面含有·这个符号。所以算法的核心就是全部为中文或者全部为中文并且有·这个符号的两种情况才允许姓名通过验证。算法具体算法如下:/** *判断姓名是否全是中文 ...原创 2018-03-28 13:42:10 · 8558 阅读 · 0 评论 -
PHP通过地址获取经纬度【百度地图API】
/** * @param string $address 地址 * @param string $city 城市名 * @return array */function getLatLng($address='',$city=''){ $result = array(); $ak = '';//您的百度地图ak,可以去百度开发者中心去免费申请 $url ="http://ap...原创 2018-01-19 13:50:50 · 6361 阅读 · 0 评论 -
PHP获取两个经纬度之间的距离【百度地图API】
/** * @param int $lat1 纬度1 * @param int $lng1 经度1 * @param int $lat2 纬度2 * @param int $lng2 经度2 * @return array */function getDistance($lat1=0,$lng1=0,$lat2=0,$lng2=0){ $ak = '';//您的百度地图ak,可...原创 2018-01-19 13:57:54 · 3504 阅读 · 0 评论 -
Java数列求和:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
问题分析:将分子分母分开来看,分子依次是2,3,5,8,13,21,除开第一项和第二项之外,其他的每一项都与前两项有直接的关系(前两项求和),所以明显是递归算法的特征,分母也是一样,所以该题通过递归方法求解。package test;/** * 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 * */public ...原创 2017-12-28 17:07:28 · 14354 阅读 · 0 评论 -
PHP数组排序,一维数组,二维数组排序。
一维数组排序1、sort,rsort排序(r(reverse表示翻转,即为降序排列))<?php$arr=array(10,2,4,1,5,8,7,9);//默认的排序,按键值升序排序,键名被从新规定,例如10原来的键名是0,现在是10sort($arr);var_dump($arr);/*array (size=8) 0 => int 1 1 => int 2原创 2017-12-27 13:04:44 · 906 阅读 · 0 评论 -
Java算法:打印杨辉三角
首先要分析到杨辉三角的特点,就是竖线和对角线都是1,然后每个元素的计算方式为头部的数字加上头部左边的数字,程序如下。package test;/** * 题目:打印出杨辉三角形(要求打印出10行如下图) * 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 */public c原创 2017-12-26 15:42:35 · 548 阅读 · 0 评论 -
Java经典算法:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
解决本题的思维需要认清楚3位数组合的本质,每个位置都有四个数字,所以可以采用3重for循环填充位置,这样就能实现了。package test;/** *题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? * 求解出所有的子集 * 灵感:整形 浮点型的长度 * 面试:https://www.zhihu.com/question/26406260 */原创 2017-12-26 15:33:05 · 11678 阅读 · 0 评论 -
算法:php求几个数字之和刚好大于或等于某一个给定的值
经常有这样的例子,求解几个数之和最接近于给定的值,今天我们就来讨论一下另外一种情况,求几个数字之和刚好大于或等于某一个给定的值。实际应用场景,例如一个用户在网上购物,需要购买某种商品20件,但是网上的几家店中,没有那家店单独有这么多商品,此时就需要几家店面一起凑够20件商品,考虑到发货成本,肯定参与发货店家越少越好,下面给出该算法的设计思路。<?php /...原创 2017-09-22 09:06:54 · 1508 阅读 · 1 评论 -
Java输入某年某月某日,判断这一天是这一年的第几天?
分析:大家都知道,每年的总共日期,要么就是365天,要么就是366天,具体是取决于闰年还是平年,更确切的说就是每年二月是28天还是29天,归结到这个问题,有一个关键的认识点,就是求解这一年是闰年(366天)还是平年(365天)。平年还是闰年计算算法:(1)年份能被4整除,但不能被100整除;(2)能被400整除下面给出具体算法:package test;import java...原创 2017-12-24 22:57:08 · 14644 阅读 · 0 评论 -
Java数组排序,现输入一个数,要求按原来的规律将它插入数组中
解决本题的关键在于,插入位置之后的值都要依次向后面移动。public class Insert { public static void main(String[] args){ //初始数组 int[] nums={0,1,2,3,4,5,6,9,10}; int[] newNums=new int[nums.length+1];原创 2017-12-24 22:53:09 · 1185 阅读 · 0 评论 -
(Java)十进制转化为二进制
package test;//辗转相除法来做import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;/** * 十进制转化为二进制 */public class DtoB { public static void main(String[] args原创 2017-12-24 22:46:25 · 455 阅读 · 0 评论 -
(Java)输入三个整数x,y,z,请把这三个数由小到大输出
public static void main(String[] args){ int num1=0,num2=0,num3=0; Scanner sc=new Scanner(System.in); num1=sc.nextInt(); num2=sc.nextInt(); num3=sc.nextInt(); int j; if(num...原创 2017-12-24 22:44:02 · 10128 阅读 · 0 评论