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批量生成随机用户名
Jul 10 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
Laravel框架表单验证操作实例分析
Sep 30 PHP
PHP单元测试配置与使用方法详解
Dec 27 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实现基于PDO的预处理示例
2017/03/28 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
vue debug 二种方法
2018/09/16 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
详解Python map函数及Python map()函数的用法
2017/11/16 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
化工专业应届生求职信
2013/11/08 职场文书
给医务人员表扬信
2014/01/12 职场文书
升国旗仪式主持词
2014/03/19 职场文书
党风廉政建设责任书
2014/04/14 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
事业单位聘任报告
2015/03/02 职场文书
岗位聘任报告
2015/03/02 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
运动会入场词
2015/07/18 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
详解Java实践之适配器模式
2021/06/18 Java/Android
MySQL 开窗函数
2022/02/15 MySQL
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript