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来检测proxy
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
php查看当前Session的ID实例
Mar 16 PHP
PHP类的封装与继承详解
Sep 29 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP封装的完整分页类示例
Aug 21 PHP
laravel实现于语言包的完美切换方法
Sep 29 PHP
PHP实现随机发放扑克牌
Apr 21 PHP
PHP 实现链式操作
Mar 09 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/04/09 欧美动漫
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
树结构之JavaScript
2017/01/24 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
js仿京东放大镜效果
2020/08/09 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python 寻找局部最高点的实现
2019/12/05 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
投标诚信承诺书
2014/05/26 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
python之基数排序的实现
2021/07/26 Python
Java移除无效括号的方法实现
2021/08/07 Java/Android
Python何绘制带有背景色块的折线图
2022/04/23 Python