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入门的学习方法
Jan 02 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 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中计算程序运行时间的类代码
2012/11/03 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
Python+Wordpress制作小说站
2017/04/14 Python
python最长回文串算法
2018/06/04 Python
python动态视频下载器的实现方法
2019/09/16 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
仓库文员岗位职责
2014/04/06 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
市场拓展计划书
2014/05/03 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
小学远程教育工作总结
2015/08/13 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
Python基础之条件语句详解
2021/06/16 Python