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 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php url地址栏传中文乱码解决方法集合
Jun 25 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 PHP
PHP 数组操作详解【遍历、指针、函数等】
May 13 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
浅析JS运动
2015/12/28 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
python实现html转ubb代码(html2ubb)
2014/07/03 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
把pandas转换int型为str型的方法
2019/01/29 Python
超简单使用Python换脸实例
2019/03/27 Python
python实现同一局域网下传输图片
2020/03/20 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
岗位职责怎么写
2014/03/14 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
工会趣味活动方案
2014/08/18 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js