- 论坛徽章:
- 0
|
第一题要求在一组数中,插入一个新数,并维护原来的排序方式不变
- <?php
- $arr = array(1,3,5,7,9);
- $arr2 = array(9,7,5,3,1);
- print_r(insertValIntoArray($arr,-1));
- print_r(insertValIntoArray($arr,10));
- print_r(insertValIntoArray($arr,2));
- print_r(insertValIntoArray($arr,5));
- print_r(insertValIntoArray($arr2,-1));
- print_r(insertValIntoArray($arr2,10));
- print_r(insertValIntoArray($arr2,2));
- print_r(insertValIntoArray($arr2,5));
- function insertValIntoArray($arr, $val) {
-
- $flag = 0;
- $total = count($arr);//总数
- $flag = $arr[$total-1] > $arr[$total-2] ? 0:1;//0:小到大,1:大到小
-
- if (!$flag) {
- for ($i=0; $i<$total; $i++) {
- if ($val < $arr[0]) {
- for ($j=$total-1; $j>=$i; $j--) {
- $arr[$j+1] = $arr[$j];
- }
- $arr[$i] = $val;
- break;
- }
- if ($val > $arr[$total-1]) {
- array_push($arr, $val);
- break;
- }
- if ($val == $arr[$i]) {
- $temp = 0;
- for ($j=$total-1; $j>=$i; $j--) {
- $arr[$j+1] = $arr[$j];
- }
- $arr[$i] = $val;
- break;
- } else if ($val > $arr[$i] && $val < $arr[$i+1]) {
- for ($j=$total-1; $j>=$i+1; $j--) {
- $arr[$j+1] = $arr[$j];
- }
- $arr[$i+1] = $val;
- break;
- }
- }
- } else {
- for ($i=0; $i<$total; $i++) {
- if ($val > $arr[0]) {
- for ($j=$total-1; $j>=$i; $j--) {
- $arr[$j+1] = $arr[$j];
- }
- $arr[$i] = $val;
- break;
- }
- if ($val < $arr[$total-1]) {
- array_push($arr, $val);
- break;
- }
- if ($val == $arr[$i]) {
- $temp = 0;
- for ($j=$total-1; $j>=$i; $j--) {
- $arr[$j+1] = $arr[$j];
- }
- $arr[$i] = $val;
- break;
- } else if ($val < $arr[$i] && $val > $arr[$i+1]) {
- for ($j=$total-1; $j>=$i+1; $j--) {
- $arr[$j+1] = $arr[$j];
- }
- $arr[$i+1] = $val;
- break;
- }
- }
- }
- return $arr;
- }
复制代码 |
|