php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数
当作为一名php 程序猿,每天总与数据库打交道,做着最底层的程序猿的工作,開始着手研究一些算法,希望自己能在计算机的道路上走的更远。事实上我更喜欢管理,希望自己能作为一个卓越的管理者,但并不影响我对技术的追求。
*
***
*****
*******
*********
***********
上图php代码例如以下
<?php
for($i=1;$i<=6;$i++){
for($z=5;$z>=$i;$z--){
echo " ";
}
for($j=1;$j<=2*$i-1;$j++){
echo "*";
}
echo "<br/>";
}
二.用PHP 写杨辉三角。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
如上图 :
<?php
for($i = 0; $i < 10; $i ++) {
for($z = 9; $z >= $i; $z --) {
echo " ";
}
for($j = 0; $j <= $i; $j ++) {
if($j==0 || $j==$i){
$newarray[$i][$j]=1;
}else{
$newarray[$i][$j]=$newarray[$i-1][$j]+$newarray[$i-1][$j-1];
}
echo $newarray[$i][$j]." ";
} echo "<br/>";
}
简单思路:
1.首先杨辉三角初始模型应该例如以下图
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
上图的形式应该非常好表示的,依据菱形的特定去考虑。两个for 循环就搞定了。
由由于向数组,把它存在数组里,在显示出来,就能够了。
<?php
/**
* @author lxy
* 在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。
* 首先须要说明的是用户给定的数组是要有一定顺序的。如升序或降序
* 不能用排序函数如sort等
*/
class insertvalue {
private function __construct() {
}
/**
* 推断是升序还是降序
* 由于数组是有顺序的所以能够这样处理
* 可是要保证键名必须从 0 開始
* 保证数组数据没有反复的值,
*/
private static function judgesort($array) {
$flg = '';
$countarray = count ( $array );
$newarray = array_unique ( $array );
$newarray = array_values ( $newarray ); // 保证键值都是从0,1,2開始的
$n = count ( $newarray );
if (count ( $newarray ) == 1) {
$flg = 0;
} else {
for($i = 0; $i < $n; $i ++) {
if ($newarray [$i] < $newarray [$i + 1]) {
$flg = 1;
break;
} else {
$flg = - 1;
break;
}
}
}
return $flg;
}
/**
* 插入元素
*/
private static function insertvalue($val, $array) {
$flg = self::judgesort ( $array );
$n = count ( $array );
// 升序
if ($flg == 1) { if ($val > $array [count ( $array ) - 1]) {
$array [count ( $array ) + 1] = $val;
return $array;
}
for($i = 0; $i < $n; $i ++) {
if ($array [$i] >= $val) {
$t1 = $array [$i];
$array [$i] = $val;
for($j = $i + 1; $j <= $n; $j ++) {
$t2 = $array [$j];
$array [$j] = $t1;
$t1 = $t2;
}
return $array;
}
}
}
// 降序
if ($flg == - 1) {
if ($val <= $array [$n - 1]) {
$array [$n] = $val;
return $array;
}
for($i = 0; $i < $n; $i ++) {
if ($val >= $array [$i]) {
$t3 = $array [$i];
$array [$i] = $val;
for($j = $i + 1; $j <= $n; $j ++) {
$t4 = $array [$j];
$array [$j] = $t3;
$t3 = $t4;
}
return $array;
}
}
}
if ($flg == 0) {
$array [$n] = $val;
return $array;
}
}
/**
* 入口文件
*/
public static function main($val, $array) {
$newarray = insertvalue::insertvalue ( $val, $array );
return $newarray;
}
} $a = 6;
$array = array (
1,
1,
1,
1,
1,
9
);
$newarray = insertvalue::main ( $a, $array );
var_dump ( $newarray );
<?php
/**
*通过hash 比較两个数组同样的数
*/
$arr=array(a,b,c,d,f);
$towarr=array(a,c,d);
$same=array();
$newarray=array();
foreach($arr as $val){
$newarray[$val]=1;
}
foreach ($towarr as $value){
if($newarray[$value]==1){
$same[]=$value;
}
}
<?php
/**
* 合并多个数组,不用array_merge(),题目来于论坛。
*/
header("Content-type:text/html;charset='utf-8'");
function conjunctionarray() {
$newarray = array ();
$num = func_num_args (); //函数參数的个数
$valarray = func_get_args (); //參数列表
for($i = 0; $i < $num; $i ++) {
if (is_array ( $valarray [$i] )) {
$newarray [] = $valarray [$i];
} else {
exit ( $valarray [$i] . '不是数组' );
}
}
return $newarray;
} $a = array (
1,
2,
3
);
$b = array(3);
print_r ( conjunctionarray ( $a, $b ) );
php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数的更多相关文章
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:基于hash的方法
http://blog.csdn.net/pipisorry/article/details/48901217 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- C语言的10大基础算法
C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...
- PHP基础算法
1.首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半. 思路:多少行for一次,然后在里面空格和星号for一次. <?php for($i=0;$i<=3;$i++ ...
- Java基础算法集50题
最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...
- 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法
http://blog.csdn.net/pipisorry/article/details/48914067 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门
1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...
- python_基础算法
本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 概述 十种常见排序算法可以分为两 ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】
本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...
随机推荐
- windows下VC界面 DIY系列1----写给想要写界面的C++程序猿的话
非常早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就立即開始刷博文,不能辜负自己的一番热血,我并非写界面的高手,仅仅想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈. ...
- 设计模式之前奏(UML类图)
原文:设计模式之前奏(UML类图) 本人菜菜一个,最近一直在博客园游走闲逛,看到了各种技术,各种各种…….便看到了大话设计模式这本书,下了电子版的看了看第一章,感觉相当不错,不仅通俗易懂,而且与实际案 ...
- Android 无法Bind Service
今天帮同学看一个bindService的样例,说是无法bind service(他接触android时间不长),那代码是从网上找的一个样例,结果看了半天,才终于找到问题所在了),这个问题真是令人挺无语 ...
- Programming from the ground up(0)
这本书的英文版是开源.我读了一些.但是,支持的英语水平不走太,然后还有那些谁译的书,但感觉不是太干脆翻译,在一些地方难以清除作者的思路,所以,我要揍很难理解他自己翻译一下原来的地方,这将更好地了解一点 ...
- Java高效读取大文件(转)
1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung(http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分. 2.在内存中读取 读 ...
- mysql数据库的安装以及常见优化设置
原文请详见:http://www.ucai.cn/blogdetail/7036?mid=1&f=5 能够在线执行查看效果哦! 本文依据优才网课程整理,面向web开发人员,内容以有用为主,专业 ...
- ecshop广告调用方法
在简单地概括ecshop广告调用该方法,已发表在博客上,在这里,我们总结了以下 :就是官方默认的方法.先加入广告位,然后加入模板的广告位区域,再在将两者相应上. 1.后台 > 广告管理 > ...
- Unity带有网络功能——创建服务,并连接到一个特定的服务
游戏本身需要在网络上创建服务,然后其他的游戏能够连接到这个服务,此外真实场景现在玩同样的游戏效果一起. 该方法是创建一个服务呼叫Network.InitializeServer( ): 是Networ ...
- socket示例代码演示程序(螺纹)
client码,如以下: import java.io.*; import java.net.*; public class DailyAdviceClient { public void go(){ ...
- 【MongoDB】在windows平台mongodb切片集群(三)
在过去的两年我们博客详细阐述了零碎工作集群和打造过程.在这篇博客中,我们主要分析测试结果一起支离破碎集群. 首先来看看碎片集群的每个状态.你可以看出来复制集A和B都是正常的: 一.开启分片集合 开启一 ...