本文实例讲述了php实现有序数组打印或排序的方法。分享给大家供大家参考,具体如下:
有序的数组打印或排序对于php来讲非常的简单了这里整理了几个不同语言的做法的实现代码,具体的我们一起来看这篇php中有序的数组打印或排序的例子吧.
最近有个面试题挺火的——把2个有序的数组打印或排序,刚看到这个题的时候也有点蒙,最优的算法肯定要用到有序的特性.
思考了一会发现也不是很难,假如数组是正序排列的,可以同时遍历2个数组,将小的值进行排序,最后会遍历完一个数组,留下一个非空数组,而且剩下的值肯定大于等于已经排好序的最大值.
PHP代码:
<"htmlcode">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数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP针对XML文件操作技巧总结》、《PHP错误与异常处理方法总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】