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