20170914

1.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如把0123456789作为基准的字串字符表,产生一个6位的字串642031,打印出的字串为 130246,可使用bash/perl/php/c任意一种。

<?php
function demo($stringList, $num){
  $randString = array_rand($stringList, $num);
  print_r($randString);
  echo '</br>';
  $randString = implode($randString);
  return strrev($randString);
}
$stringList = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$num = 6;
echo $str = demo($stringList, $num);

Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 7 [5] => 8 )
876420

2.array_rand(array, number)

返回包含随机键名的数组

3.str_split(string)

把字符串分割到数组中

4.排序法

  • 冒泡排序法
    思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。
    比如:
    4,2,1
    2,4,1 2,1,4 // 第一次 冒出的泡是4 比较2次 3-1
    1,2,4 // 第二次 冒出的泡是 2 比较1次 3-2
    1,2,4
<?php
function maoPaosort($nums){
  $count = count($nums);
  for ($i=1; $i <$count ; $i++) {
    for($k=0; $k<$count-$i; $k++){
      if($nums[$k] > $nums[$k+1]){
        $temp = $nums[$k];
        $nums[$k] = $nums[$k+1];
        $nums[$k+1] = $temp;
      }
    }
  }
  return $nums;
}
$nums = array(1,43,54,62,21,66,32,78,36,76,39);
var_dump(maoPaosort($nums)); 
  • 选择排序法:
    选择排序法思路: (从最左开始)每次选择一个相应的数,假设这个数是最小值,并记下其下标,然后和该数下表之后的数进行比较,如果发现有比该数小的就记下下标,比较循环找到最小的那个数的下标。最后该相应的数下标和最小数的下标两个数交换。
<?php
function selectSort($nums){
  $count = count($nums);
  for ($i=0; $i <$count-1 ; $i++) {
    $min = $i;
    for ($k=$i+1; $k <$count ; $k++) {
      if($nums[$min] > $nums[$k]){
        $min = $k;
      }
    }
    if($i != $min){
      $temp = $nums[$i];
      $nums[$i] = $nums[$min];
      $nums[$min] = $temp;
    }
  }
  return $nums;
}
$nums = array(1,43,54,62,21,99,32,78,36,76,39);
var_dump(selectSort($nums));
  • 插入排序法
    将要排序的元素插入到已经假定排序好的数组的指定位置。
<?php
function insertSort($nums){
  $count = count($nums);
  for ($i=1; $i < $count; $i++) {
    $temp = $nums[$i];
    for ($k=$i-1; $k >= 0 ; $k--) {
      if($temp < $nums[$k]){
        $nums[$k+1] = $nums[$k];
        $nums[$k] = $temp;
      }else{
        break;
      }
    }
  }
  return $nums;
}
$nums = array(1,43,54,62,21,99,32,78,36,76,39);
var_dump(insertSort($nums));
  • 快速排序法
<?php
function quickSort($nums){
    $count = count($nums);
    if($count<=1){
      return $nums;
    }

    $num = $nums[0];
    $arr_left = array();
    $arr_right = array();

    for($i=1;$i<$count;$i++){
      if($nums[$i] < $num){
        $arr_left[] = $nums[$i];
      }else{
        $arr_right[] = $nums[$i];
      }
    }
    $arr_left = quickSort($arr_left);
    $arr_right = quickSort($arr_right);

    return array_merge($arr_left, array($num), $arr_right);

}
$nums = array(1, 33, 55, 3, 32);
var_dump(quickSort($nums));

5.小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。

输入描述:
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。
示例1
输入
10
输出
122

<?php
function magic($n){
 $result="";
 while($n){
   if($n % 2 ==0){
     $n = ($n - 2) / 2;
     $result = $result."2";
   }else{
     $n = ($n - 1) / 2;
     $result = $result."1";
   }
 }
 return strrev($result);
}
$n= 10;
echo magic($n);
122
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容