Zwei sortierte Arrays zusammenführen

WBOY
Freigeben: 2016-08-08 09:22:05
Original
982 Leute haben es durchsucht

Frage: Es gibt zwei sortierte Arrays A und B. Der verbleibende Platz von Array A reicht gerade aus, um B aufzunehmen. Bitte implementieren Sie eine Funktion, um alle Zahlen in B in A einzufügen und alle Zahlen werden sortiert. von.

Die ursprüngliche Idee vieler Menschen besteht darin, einfach einzufügen, was heftig genug ist, direkt vom Anfang bis zum Ende in A zu durchlaufen, eine geeignete Position zu finden und alle nachfolgenden Elemente zu verschieben, um Platz für eines zu schaffen Das Ausfüllen neu eingefügter Zahlen ist die ineffizienteste Methode.

Eine bessere Möglichkeit, das Gegenteil zu tun, besteht darin, die Zahlen in A und B vom Ende beginnend zu vergleichen und die größere Zahl an das Ende von A zu kopieren.

Diese Lösung kann auch auf das Ersetzen von Zeichenfolgen angewendet werden, wenn Sie die Leerzeichen in der Zeichenfolge durch „ “ ersetzen möchten (in der Netzwerkprogrammierung, wenn die URL Sonderzeichen enthält, z B. Leerzeichen und „#“, wird es auf der Serverseite möglicherweise nicht korrekt analysiert und muss daher konvertiert werden. Die Konvertierungsregel besteht darin, nach „%“ eine zweistellige hexadezimale Darstellung des ASCII-Codes hinzuzufügen, beispielsweise ein Leerzeichen . Der ASCII-Code ist 32, also ist der Hexadezimalwert 20, der in . umgewandelt wird. Wenn Sie die Zeichenfolge vom Anfang bis zum Ende durchlaufen, ist dies der Fall Anzahl der Leerzeichen vom Anfang an, beantragen Sie mehr Speicher für die Zeichenfolge, kopieren Sie sie dann vom Ende und ersetzen Sie sie, wenn sie auf ein Leerzeichen stößt, wodurch die Anzahl der Bewegungen effektiv reduziert werden kann .

Der Code für die Array-Zusammenführung lautet wie folgt:

<?php
/*
$data1 数组A
$data2 数组B
$num1  数组A的有效元素个数
*/
function merge(&$data1,$data2,$num1)
{
	$total=count($data1);
	$num2=count($data2);
	while($num1>0&&$num2>0)
	{
		if($data1[$num1-1]>$data2[$num2-1])
		{
			$data1[$total-1]=$data1[$num1-1];
			$total--;
			$num1--;
		}
		else
		{
			$data1[$total-1]=$data2[$num2-1];
			$total--;
			$num2--;
		}
	}
	if($num2>0)
	{
		while($total>0&&$num2>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);
Nach dem Login kopieren

Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.

Das Obige stellt die Zusammenführung zweier geordneter Arrays vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage