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 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
PHP 引用是个坏习惯
Mar 12 PHP
php 文件上传实例代码
Apr 19 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
javascript实现下雨效果
2017/03/27 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
Python 学习笔记
2008/12/27 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
pycham查看程序执行的时间方法
2018/11/29 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
Python socket服务常用操作代码实例
2020/06/22 Python
简述 Python 的类和对象
2020/08/21 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
财务方面个人工作的自我评价
2013/12/28 职场文书
风险评估实施方案
2014/03/09 职场文书
培训协议书范本
2014/04/22 职场文书
师德师风承诺书
2014/05/23 职场文书
上班旷工检讨书
2015/08/15 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python