php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】


Posted in PHP onNovember 10, 2016

本文实例讲述了php实现有序数组打印或排序的方法。分享给大家供大家参考,具体如下:

有序的数组打印或排序对于php来讲非常的简单了这里整理了几个不同语言的做法的实现代码,具体的我们一起来看这篇php中有序的数组打印或排序的例子吧.

最近有个面试题挺火的——把2个有序的数组打印或排序,刚看到这个题的时候也有点蒙,最优的算法肯定要用到有序的特性.

思考了一会发现也不是很难,假如数组是正序排列的,可以同时遍历2个数组,将小的值进行排序,最后会遍历完一个数组,留下一个非空数组,而且剩下的值肯定大于等于已经排好序的最大值.

PHP代码:

<?php
  function sort_arr($a,$b) {
    $temp = array();
    while ($a&&$b) {
      if($a['0']<$b['0']) {
        $temp[] = array_shift($a);
      } else {
        $temp[] = array_shift($b);
      }
    }
    if(!emptyempty($a)) { $temp = array_merge($temp, $a); }
    if(!emptyempty($b)) { $temp = array_merge($temp, $b); }
    return $temp;
  }
  $a = array(1,2,3,4,5,6);
  $b = array(2,3,4,10,10,10,10);
  sort_arr($a, $b);
?>

运行得到的新数组为:

Array
(
  [0] => 1
  [1] => 2
  [2] => 2
  [3] => 3
  [4] => 3
  [5] => 4
  [6] => 4
  [7] => 5
  [8] => 6
  [9] => 10
  [10] => 10
  [11] => 10
  [12] => 10
)

其他语言实现代码:

Python 代码:

def fib(a,b):
  len_a = len(a)
  c = []
  while len(a) and len(b):
    if a[0] > b[0]:
      c.append(b.pop(0))
    else:
      c.append(a.pop(0))
  if len(a):
    c = c+a
  if len(b):
    c = c+b
  i=0
  while i<len(c):
    print(c[i])
    i = i+1
a = [1,2,3,4,5]
b = [2,3,4,5,6,7,8,9]
fib(a,b)

C代码:

#include &lt;stdio.h&gt;;
int *sort(int a[], int b[], int a_len, int b_len) {
  int *temp = malloc(a_len+b_len);
  int i=0; //标注a数组
  int j=0; //标注b数组
  int m=0; //标注新数组
  while (i&lt;a_len&amp;&amp;j&lt;b_len) { //重新排序 if(a[i]&lt;b[j]) {
      temp[m++] = b[j++];
    } else {
      temp[m++] = a[i++];
    }
  }
  //将剩余的数字放在新数组后面(剩余的肯定是前面的数字大)
  if(i&lt;a_len) {
    for (; i&lt;a_len; i++) {
      temp[m++] = a[i];
    }
  }
  if(j&lt;b_len) {
    for (; j&lt;b_len; j++) {
      temp[m++] = b[j];
    }
  }
  return temp;
}
int main(int argc, const char * argv[]) {
  int a[4] = {2,3,11,89};
  int b[6] = {4,6,9,10,22,55};
  int a_len = sizeof(a) / sizeof(a[0]);
  int b_len = sizeof(b) / sizeof(b[0]);
  int *c = sort(a, b, a_len, b_len);
  int y = 0;
  for (; y&lt;a_len+b_len; y++) {
    printf("%d ", c[y]);
  }
  return 0;
}

GO代码:

package main

import "fmt"

func main() {

    var a = [5]int{1, 2, 3, 4, 5}

    var b = [8]int{4, 5, 6, 7, 89, 100, 111, 112}

    var len_a = len(a)

    var len_b = len(b)

    var c = make([]int, len_a+len_b)

    var j = 0 //标注a数组

    var k = 0 //标注b数组

    var h = 0 //标注新数组

    for j &lt; len_a &amp;&amp; k &lt; len_b {

        if a[j] &gt; b[k] {

            c[h] = b[k]

            h++

            k++

        } else {

            c[h] = a[j]

            h++

            j++

        }

    }

    if j &lt; len_a {

        for i := j; i &lt; len_a; i++ {

            c[h] = a[i]

            h++

        }

    }

    if k &lt; len_b {

        for i := k; i &lt; len_b; i++ {

            c[h] = b[i]

            h++

        }

    }

    Print(c, "c")

}

/**

 * [Print array]

 * @param {[type]} o    []int  [array]

 * @param {[type]} name string [array name]

 */

func Print(o []int, name string) {

    fmt.Printf("%s: ", name)

    for _, v := range o {

        fmt.Printf("%d ", v)

    }

    fmt.Printf("\n")

}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 PHP
linux iconv方法的使用
Oct 01 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
php数组键值用法实例分析
Feb 27 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
使用php实现从身份证中提取生日
May 09 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 #PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 #PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 #PHP
php事件驱动化设计详解
Nov 10 #PHP
PHP的消息通信机制测试实例
Nov 10 #PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 #PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 #PHP
You might like
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PHP动态创建Web站点的方法
2011/08/14 PHP
第四章 php数学运算
2011/12/30 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Array对象方法参考
2006/10/03 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
layui 表单标签的校验方法
2019/09/04 Javascript
Python入门篇之面向对象
2014/10/20 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python实现udp传输图片功能
2020/03/20 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
语文教学感言
2014/02/06 职场文书
高中生逃课检讨书
2014/10/10 职场文书
2015年植树节活动总结
2015/02/06 职场文书
农村党支部承诺书
2015/04/30 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
HTTP中的Content-type详解
2022/01/18 HTML / CSS