当作为一名php 程序猿,每天总与数据库打交道,做着最底层的程序猿的工作,開始着手研究一些算法,希望自己能在计算机的道路上走的更远。事实上我更喜欢管理,希望自己能作为一个卓越的管理者,但并不影响我对技术的追求。

*

***

   *****

  *******

 *********

***********

上图php代码例如以下

  1. <?php
  2. for($i=1;$i<=6;$i++){
  3. for($z=5;$z>=$i;$z--){
  4. echo " ";
  5. }
  6. for($j=1;$j<=2*$i-1;$j++){
  7. echo "*";
  8. }
  9. echo "<br/>";
  10. }

二.用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

如上图 :

  1. <?php
  2. for($i = 0; $i < 10; $i ++) {
  3. for($z = 9; $z >= $i; $z --) {
  4. echo "  ";
  5. }
  6. for($j = 0; $j <= $i; $j ++) {
  7. if($j==0 || $j==$i){
  8. $newarray[$i][$j]=1;
  9. }else{
  10. $newarray[$i][$j]=$newarray[$i-1][$j]+$newarray[$i-1][$j-1];
  11. }
  12. echo $newarray[$i][$j]."   ";
  13. }
  14.  
  15. echo "<br/>";
  16. }

简单思路:

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 循环就搞定了。

由由于向数组,把它存在数组里,在显示出来,就能够了。

  1. <?php
  2. /**
  3. * @author lxy
  4. * 在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。
  5. * 首先须要说明的是用户给定的数组是要有一定顺序的。如升序或降序
  6. * 不能用排序函数如sort等
  7. */
  8. class insertvalue {
  9. private function __construct() {
  10. }
  11. /**
  12. * 推断是升序还是降序
  13. * 由于数组是有顺序的所以能够这样处理
  14. * 可是要保证键名必须从 0 開始
  15. * 保证数组数据没有反复的值,
  16. */
  17. private static function judgesort($array) {
  18. $flg = '';
  19. $countarray = count ( $array );
  20. $newarray = array_unique ( $array );
  21. $newarray = array_values ( $newarray ); // 保证键值都是从0,1,2開始的
  22. $n = count ( $newarray );
  23. if (count ( $newarray ) == 1) {
  24. $flg = 0;
  25. } else {
  26. for($i = 0; $i < $n; $i ++) {
  27. if ($newarray [$i] < $newarray [$i + 1]) {
  28. $flg = 1;
  29. break;
  30. } else {
  31. $flg = - 1;
  32. break;
  33. }
  34. }
  35. }
  36. return $flg;
  37. }
  38. /**
  39. * 插入元素
  40. */
  41. private static function insertvalue($val, $array) {
  42. $flg = self::judgesort ( $array );
  43. $n = count ( $array );
  44. // 升序
  45. if ($flg == 1) {
  46.  
  47. if ($val > $array [count ( $array ) - 1]) {
  48. $array [count ( $array ) + 1] = $val;
  49. return $array;
  50. }
  51. for($i = 0; $i < $n; $i ++) {
  52. if ($array [$i] >= $val) {
  53. $t1 = $array [$i];
  54. $array [$i] = $val;
  55. for($j = $i + 1; $j <= $n; $j ++) {
  56. $t2 = $array [$j];
  57. $array [$j] = $t1;
  58. $t1 = $t2;
  59. }
  60. return $array;
  61. }
  62. }
  63. }
  64. // 降序
  65. if ($flg == - 1) {
  66. if ($val <= $array [$n - 1]) {
  67. $array [$n] = $val;
  68. return $array;
  69. }
  70. for($i = 0; $i < $n; $i ++) {
  71. if ($val >= $array [$i]) {
  72. $t3 = $array [$i];
  73. $array [$i] = $val;
  74. for($j = $i + 1; $j <= $n; $j ++) {
  75. $t4 = $array [$j];
  76. $array [$j] = $t3;
  77. $t3 = $t4;
  78. }
  79. return $array;
  80. }
  81. }
  82. }
  83. if ($flg == 0) {
  84. $array [$n] = $val;
  85. return $array;
  86. }
  87. }
  88. /**
  89. * 入口文件
  90. */
  91. public static function main($val, $array) {
  92. $newarray = insertvalue::insertvalue ( $val, $array );
  93. return $newarray;
  94. }
  95. }
  96.  
  97. $a = 6;
  98. $array = array (
  99. 1,
  100. 1,
  101. 1,
  102. 1,
  103. 1,
  104. 9
  105. );
  106. $newarray = insertvalue::main ( $a, $array );
  107. var_dump ( $newarray );
  1. <?php
  2. /**
  3. *通过hash 比較两个数组同样的数
  4. */
  5. $arr=array(a,b,c,d,f);
  6. $towarr=array(a,c,d);
  7. $same=array();
  8. $newarray=array();
  9. foreach($arr as $val){
  10. $newarray[$val]=1;
  11. }
  12. foreach ($towarr as $value){
  13. if($newarray[$value]==1){
  14. $same[]=$value;
  15. }
  16. }
  1. <?php
  2. /**
  3. * 合并多个数组,不用array_merge(),题目来于论坛。
  4. */
  5. header("Content-type:text/html;charset='utf-8'");
  6. function conjunctionarray() {
  7. $newarray = array ();
  8. $num = func_num_args (); //函数參数的个数
  9. $valarray = func_get_args (); //參数列表
  10. for($i = 0; $i < $num; $i ++) {
  11. if (is_array ( $valarray [$i] )) {
  12. $newarray [] = $valarray [$i];
  13. } else {
  14. exit ( $valarray [$i] . '不是数组' );
  15. }
  16. }
  17. return $newarray;
  18. }
  19.  
  20. $a = array (
  21. 1,
  22. 2,
  23. 3
  24. );
  25. $b = array(3);
  26. print_r ( conjunctionarray ( $a, $b ) );

php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数的更多相关文章

  1. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  2. 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:基于hash的方法

    http://blog.csdn.net/pipisorry/article/details/48901217 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  3. C语言的10大基础算法

    C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文包括了经典的Fibonacci数列.简易 ...

  4. PHP基础算法

    1.首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半. 思路:多少行for一次,然后在里面空格和星号for一次. <?php for($i=0;$i<=3;$i++ ...

  5. Java基础算法集50题

    最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...

  6. 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法

    http://blog.csdn.net/pipisorry/article/details/48914067 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  7. 贝叶斯公式由浅入深大讲解—AI基础算法入门

    1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...

  8. python_基础算法

    本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 概述 十种常见排序算法可以分为两 ...

  9. 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】

    本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...

随机推荐

  1. OpenCVR 有新成员 OpenCVV OpenCVC

    OpenCVC主要负责OpenCVR报名, OpenCVV支持Android IOS Mac Windows 的client 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  2. android代码集EditText只要输入号码、信

     如何设置EditText,因此,只有某些数字或字母可以进入它? 一.建立EditText,只要输入号码: 办法1:直接生成DigitsKeyListener了. et_1.setKeyListe ...

  3. Linux管道通信

    1.Linux内部自己实现了管道的同步,但多个读或者多个写之间的互斥,还需要自己实现.

  4. Unicode字段也有collation

    原文:Unicode字段也有collation 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/11/unicode-collation.aspx ...

  5. 移动端 rem字体的使用demo

        <!doctype html> <html> <head> <meta charset="utf-8"> <title ...

  6. Team Foundation Server 2015使用教程--团队项目创建

  7. 使用python+flask让你自己api(教程源代码)

    1.背景 ok,这可能是很多朋友和我一样经常使用的各种api,例facebook的.github的.甚至微信api.因此,很多人都想使自己的api.在线教程在这方面它是非常小的,今天,我做了一个平稳, ...

  8. cocos2dx 3.x Value、Vector和Map意识

    1. Value cocos2d::Value 这包括一个非常大的数字原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外 加s ...

  9. oracle_单向函数_数字化功能

    oracle_单向函数_数字化功能 1.abs(x)   为了获得x绝对值 2.ceil(x)   用于获得大于或等于x的最小整数. 3.floor(x)   用于获得小于或等于x 4.mod(x,y ...

  10. Scala刮:使用Intellij IDEA写hello world

    介绍 在前面的文章中,,我们介绍了如何使用Scala IDE那是,eclipse集成Scala开发插件Scala开发语言程序.使用一段时间后,.发现eclipse正确Scala支持不是很好.用户体验差 ...