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中的MVC模式运用技巧
May 03 PHP
程序员编程十条戒律
Jul 09 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
Laravel配置全局公共函数的方法步骤
May 09 PHP
php异常处理捕获错误整理
Sep 23 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 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年的四部动画电影
2020/01/01 欧美动漫
解决File size limit exceeded 错误的方法
2013/06/14 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python中List的sort方法指南
2014/09/01 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
什么是python的列表推导式
2020/05/26 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
创建服务型党组织实施方案
2014/02/25 职场文书
服装发布会策划方案
2014/05/22 职场文书
班级文化建设标语
2014/06/23 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
2015年环保局工作总结
2015/05/22 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
环保建议书作文500字
2015/09/14 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
导游词之井冈山
2019/11/20 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
总结python多进程multiprocessing的相关知识
2021/06/29 Python