首页 > 后端开发 > php教程 > php如何实现原址排序数组使奇数位于偶数前面(代码)

php如何实现原址排序数组使奇数位于偶数前面(代码)

不言
发布: 2023-04-04 08:10:02
原创
2043 人浏览过

本篇文章给大家带来的内容是关于php如何实现原址排序数组使奇数位于偶数前面(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

1、遍历数组,判断元素奇数偶数,push进新数组,空间换时间

2、插入排序的思想             空间上是原址排序

2.1从前往后遍历,判断当前的是奇数 

2.2从当前的开始,从后往前遍历,如果是偶数就往后一位移动 

2.3当前奇数插入位置

1

2

3

4

5

6

7

8

for i=1;i<arr.length;i++

    target=arr[i]

    if arr[i]%2==1

        j=i-1

        while j>=0&&arr[j]%2==0

            arr[j+1]=arr[j]

            j--

        arr[j+1]=target

登录后复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

$arr=array(1,2,3,4,5,6,7,8,9,10);

function reOrderArray($arr){

        $length=count($arr);

        //从前往后遍历

        for($i=1;$i<$length;$i++){

                //判断当前元素是奇数

                $target=$arr[$i];

                if($target%2==1){

                        //从后往前遍历,如果有偶数就往后移动一位

                        $j=$i-1;

                        while($j>=0 && $arr[$j]%2==0){

                                $arr[$j+1]=$arr[$j];

                                $j--;

                        }  

                        //把奇数插入位置

                        $arr[$j+1]=$target;

                }  

        }  

        return $arr;

}

 

$arr2=reOrderArray($arr);

var_dump($arr2);

登录后复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

array(10) {

  [0]=>

  int(1)

  [1]=>

  int(3)

  [2]=>

  int(5)

  [3]=>

  int(7)

  [4]=>

  int(9)

  [5]=>

  int(2)

  [6]=>

  int(4)

  [7]=>

  int(6)

  [8]=>

  int(8)

  [9]=>

  int(10)

}

登录后复制

以上是php如何实现原址排序数组使奇数位于偶数前面(代码)的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板