首页 后端开发 php教程 合并两个有序数组

合并两个有序数组

Aug 08, 2016 am 09:22 AM
amp data

题目:有两个排序的数组A和B,数组A剩余的空间刚好够容纳B,请实现一个函数,把B中的所有数字插入到A中并且所有的数都是排序的。

很多人一开始的想法就是简单的插入,足够暴力,在A中直接从头到尾遍历,找到合适的位置就移动后面所有的元素,让出一个位填补新插入的数,这种做法是效率最低的。

反其道而行之,更好的办法是从尾开始比较A和B中的数字,把较大的数字复制到A的末尾。

这种解决方法同样可以运用到字符串替换中去,如果要将字符串中的空格替换成“%20”(在网络编程中,URL中如果包含空格、“#”等特殊字符,可能导致在服务器端无法正确解析,所以需要进行转换,转换规则为在‘%’后面加上ASCII码的两位十六进制表示。比如空格的ASCII码是32,所以十六进制就是20,那就是转换成%20。),如果从头到尾遍历去插入,移动字符串的次数会很多,那么如果从一开始就知道空格的数量,申请多的内存给字符串,然后从尾开始复制,遇到空格就替换,可以有效减少移动次数

数组合并的代码如下:

<?php /*
$data1 数组A
$data2 数组B
$num1  数组A的有效元素个数
*/
function merge(&$data1,$data2,$num1)
{
	$total=count($data1);
	$num2=count($data2);
	while($num1>0&amp;&amp;$num2&gt;0)
	{
		if($data1[$num1-1]&gt;$data2[$num2-1])
		{
			$data1[$total-1]=$data1[$num1-1];
			$total--;
			$num1--;
		}
		else
		{
			$data1[$total-1]=$data2[$num2-1];
			$total--;
			$num2--;
		}
	}
	if($num2&gt;0)
	{
		while($total&gt;0&amp;&amp;$num2&gt;0)
		{
			$data1[$total-1]=$data2[$num2-1];
			$total--;
			$num2--;
		}
	}
}

$a=array(1,3,5,7,9,0,0,0,0,0);
$b=array(2,4,6,8,10);
merge($a,$b,5);
print_r($a);
登录后复制

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了合并两个有序数组,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

AMP是什么币? AMP是什么币? Feb 24, 2024 pm 09:16 PM

AMP是什么币?

data文件夹里面是什么数据 data文件夹里面是什么数据 May 05, 2023 pm 04:30 PM

data文件夹里面是什么数据

mysql load data乱码怎么办 mysql load data乱码怎么办 Feb 16, 2023 am 10:37 AM

mysql load data乱码怎么办

AI 项目失败率高达 80%——研究指出问题识别不佳以及主要问题中对最新技术趋势的关注 AI 项目失败率高达 80%——研究指出问题识别不佳以及主要问题中对最新技术趋势的关注 Aug 31, 2024 am 12:59 AM

AI 项目失败率高达 80%——研究指出问题识别不佳以及主要问题中对最新技术趋势的关注

xdata和data有哪些区别 xdata和data有哪些区别 Dec 11, 2023 am 11:30 AM

xdata和data有哪些区别

MySQL 狂写错误日志 MySQL 狂写错误日志 Feb 18, 2024 pm 05:00 PM

MySQL 狂写错误日志

vue组件中data不能是函数吗 vue组件中data不能是函数吗 Dec 19, 2022 pm 05:22 PM

vue组件中data不能是函数吗

退货多于销量:人道爱拼正在成为一场商业灾难 退货多于销量:人道爱拼正在成为一场商业灾难 Aug 08, 2024 pm 01:14 PM

退货多于销量:人道爱拼正在成为一场商业灾难

See all articles