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将数据导入到Foxmail
Oct 09 PHP
php&amp;java(三)
Oct 09 PHP
php读取msn上的用户信息类
Dec 05 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
curl和libcurl的区别简介
Jul 01 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
header导出Excel应用示例
2014/01/24 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
python字符串连接方式汇总
2014/08/21 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Django更新models数据库结构步骤
2020/04/01 Python
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
英语专业毕业生自荐信
2013/10/28 职场文书
电子商务专业个人的自我评价
2013/11/19 职场文书
函授生自我鉴定
2014/03/25 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
青岛导游词
2015/02/12 职场文书
电信营业员岗位职责
2015/04/14 职场文书
初中家长意见
2015/06/03 职场文书
人代会简报
2015/07/21 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
Python实现排序方法常见的四种
2021/07/15 Python