手机
当前位置:查字典教程网 >编程开发 >php教程 >php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
摘要:本文实例讲述了php实现有序数组打印或排序的方法。分享给大家供大家参考,具体如下:有序的数组打印或排序对于php来讲非常的简单了这里整理了几...

本文实例讲述了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实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】】相关文章:

php准确获取文件MIME类型的方法

PHP+shell实现多线程的方法

php恢复数组的key为数字序列的方法

php使用post数组的键值创建同名变量并赋值的方法

php对象和数组相互转换的方法

PHP 判断数组是否为空的5大方法

php简单实现快速排序的方法

php实现的IMEI限制的短信验证码发送类

php实现格式化多行文本为Js可用格式

php将HTML表格每行每列转为数组实现采集表格数据的方法

精品推荐
分类导航