php 冒泡排序 快速排序,php冒泡排序_PHP教程
php 冒泡排序 快速排序,php冒泡排序
/******
1)冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边。
2)对整列数两两交换一次,最小的数在最左边,每次都能得一个在剩下的数中的最小 的数,“冒”出来的数组成一个有序区间,剩下的值组成一无序区间,且有序区间中每一元素值都比无序区间的小。
3)快速排序:基准数,左右二个数组,递归调用,合并。
4)插入排序:排序区间分成二部分,左边有序,右边无序,从右区间取第一个元素插入左区间,若此元素比左边区间最右边的元素大,留在原处,若此元素比左 边区间最右边的元素小,则插在最右边5)元素的原位置,同时最右边元素右移一位,计算器减一,重新和前面的元素比较,直到前面的元素比要插入元素小为止,重复 上述步骤。
6)注意区间端点值的处理,及数组的第一个元素下标为0.
***/
<span><br />$a</span>=<span>array</span>('3','8','1','4','11','7'<span>); </span><span>print_r</span>(<span>$a</span><span>); </span><span>$len</span> = <span>count</span>(<span>$a</span><span>); </span><span>//</span><span>从小到大</span> <span>for</span>(<span>$i</span>=1;<span>$i</span><<span>$len</span>;<span>$i</span>++<span>) { </span><span>for</span>(<span>$j</span>=<span>$len</span>-1;<span>$j</span>>=<span>$i</span>;<span>$j</span>--<span>) </span><span>if</span>(<span>$a</span>[<span>$j</span>]<<span>$a</span>[<span>$j</span>-1<span>]) {</span><span>//</span><span>如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了</span> <span>$x</span>=<span>$a</span>[<span>$j</span><span>]; </span><span>$a</span>[<span>$j</span>]=<span>$a</span>[<span>$j</span>-1<span>]; </span><span>$a</span>[<span>$j</span>-1]=<span>$x</span><span>; } } </span><span>print_r</span>(<span>$a</span><span>); </span><span>//</span><span>另一种方法 从小到大</span> <span>$b</span>=<span>array</span>('4','3','8','9','2','1'<span>); </span><span>$len</span>=<span>count</span>(<span>$b</span><span>); </span><span>for</span>(<span>$k</span>=1;<span>$k</span><<span>$len</span>;<span>$k</span>++<span>) { </span><span>for</span>(<span>$j</span>=<span>$len</span>-1,<span>$i</span>=0;<span>$i</span><<span>$len</span>-<span>$k</span>;<span>$i</span>++,<span>$j</span>--<span>) </span><span>if</span>(<span>$b</span>[<span>$j</span>]<<span>$b</span>[<span>$j</span>-1<span>]){ </span><span>//</span><span>如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了</span> <span>$tmp</span>=<span>$b</span>[<span>$j</span><span>]; </span><span>$b</span>[<span>$j</span>]=<span>$b</span>[<span>$j</span>-1<span>]; </span><span>$b</span>[<span>$j</span>-1]=<span>$tmp</span><span>; } </span><span>print_r</span>(<span>$b</span><span>); </span><span>echo</span> " "<span>; } </span><span>//</span><span>下面的这个执行效率更高</span> <span>function</span> maopao(<span>$arr</span><span>) { </span><span>$len</span> = <span>count</span>(<span>$arr</span><span>); </span><span>for</span>(<span>$i</span>=1; <span>$i</span><<span>$len</span>; <span>$i</span>++)<span>//</span><span>最多做n-1趟排序</span> <span> { </span><span>$flag</span> = <span>false</span>; <span>//</span><span>本趟排序开始前,交换标志应为假</span> <span>for</span>(<span>$j</span>=<span>$len</span>-1;<span>$j</span>>=<span>$i</span>;<span>$j</span>--<span>) { </span><span>if</span>(<span>$arr</span>[<span>$j</span>]<<span>$arr</span>[<span>$j</span>-1])<span>//</span><span>交换记录</span> {<span>//</span><span>如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了</span> <span>$x</span>=<span>$arr</span>[<span>$j</span><span>]; </span><span>$arr</span>[<span>$j</span>]=<span>$arr</span>[<span>$j</span>-1<span>]; </span><span>$arr</span>[<span>$j</span>-1]=<span>$x</span><span>; </span><span>$flag</span> = <span>true</span>;<span>//</span><span>发生了交换,故将交换标志置为真</span> <span> } } </span><span>if</span>(! <span>$flag</span>)<span>//</span><span>本趟排序未发生交换,提前终止算法</span> <span>return</span> <span>$arr</span><span>; } } </span><span>$shuz</span> = <span>array</span>('2','4','1','8','5'<span>); </span><span>$bb</span> = maopao(<span>$shuz</span><span>); </span><span>print_r</span>(<span>$bb</span><span>); </span><span>//</span><span> 快速排序</span> <span>function</span> kuaisu(<span>$arr</span><span>){ </span><span>$len</span> = <span>count</span>(<span>$arr</span><span>); </span><span>if</span>(<span>$len</span> <= 1<span>){ </span><span>return</span> <span>$arr</span><span>; } </span><span>$key</span> = <span>$arr</span>[0<span>]; </span><span>$left_arr</span> = <span>array</span><span>(); </span><span>$right_arr</span> = <span>array</span><span>(); </span><span>for</span>(<span>$i</span>=1; <span>$i</span><<span>$len</span>;<span>$i</span>++<span>){ </span><span>if</span>(<span>$arr</span>[<span>$i</span>] <= <span>$key</span><span>){ </span><span>$left_arr</span>[] = <span>$arr</span>[<span>$i</span><span>]; }</span><span>else</span><span>{ </span><span>$right_arr</span>[] = <span>$arr</span>[<span>$i</span><span>]; } } </span><span>$left_arr</span> = kuaisu(<span>$left_arr</span><span>); </span><span>$right_arr</span> = kuaisu(<span>$right_arr</span><span>); </span><span>return</span> <span>array_merge</span>(<span>$left_arr</span>, <span>array</span>(<span>$key</span>), <span>$right_arr</span><span>); } </span><span>$arr</span> = <span>array</span>(23,98,54,2,9,62,34<span>); </span><span>print_r</span>(kuaisu(<span>$arr</span>));

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Funktionszeigertechnologie kann die Codeeffizienz und Wiederverwendbarkeit verbessern, insbesondere wie folgt: Verbesserte Effizienz: Durch die Verwendung von Funktionszeigern kann wiederholter Code reduziert und der Aufrufprozess optimiert werden. Verbessern Sie die Wiederverwendbarkeit: Funktionszeiger ermöglichen die Verwendung allgemeiner Funktionen zur Verarbeitung verschiedener Daten und verbessern so die Wiederverwendbarkeit von Programmen.

Datenstrukturen und Algorithmen sind die Grundlage der Java-Entwicklung. In diesem Artikel werden die wichtigsten Datenstrukturen (wie Arrays, verknüpfte Listen, Bäume usw.) und Algorithmen (wie Sortier-, Such-, Diagrammalgorithmen usw.) ausführlich untersucht. Diese Strukturen werden anhand praktischer Beispiele veranschaulicht, darunter die Verwendung von Arrays zum Speichern von Bewertungen, verknüpfte Listen zum Verwalten von Einkaufslisten, Stapel zum Implementieren von Rekursionen, Warteschlangen zum Synchronisieren von Threads sowie Bäume und Hash-Tabellen für schnelle Suche und Authentifizierung. Wenn Sie diese Konzepte verstehen, können Sie effizienten und wartbaren Java-Code schreiben.

So implementieren Sie den Bubble-Sort-Algorithmus in C#. Bubble-Sort ist ein einfacher, aber effektiver Sortieralgorithmus, der ein Array durch mehrmaligen Vergleich benachbarter Elemente und Austausch von Positionen anordnet. In diesem Artikel stellen wir vor, wie der Blasensortierungsalgorithmus mithilfe der C#-Sprache implementiert wird, und stellen spezifische Codebeispiele bereit. Lassen Sie uns zunächst die Grundprinzipien der Blasensortierung verstehen. Der Algorithmus beginnt beim ersten Element des Arrays und vergleicht es mit dem nächsten Element. Wenn das aktuelle Element größer als das nächste Element ist, tauschen Sie ihre Positionen; wenn das aktuelle Element kleiner als das nächste Element ist, behalten Sie es bei

Wie schreibe ich einen benutzerdefinierten PHP-Array-Sortieralgorithmus? Blasensortierung: Sortiert ein Array durch Vergleichen und Austauschen benachbarter Elemente. Auswahlsortierung: Wählen Sie jedes Mal das kleinste oder größte Element aus und tauschen Sie es mit der aktuellen Position aus. Einfügungssortierung: Elemente nacheinander in einen geordneten Teil einfügen.

Komplexität des PHP-Array-Sortieralgorithmus: Blasensortierung: O(n^2) Schnellsortierung: O(nlogn) (Durchschnitt) Zusammenführungssortierung: O(nlogn)

Auswahl des C++-Funktionsleistungsoptimierungsalgorithmus: Wählen Sie effiziente Algorithmen (z. B. schnelle Sortierung, binäre Suche). Optimierungsfähigkeiten: Kleine Funktionen einbinden, Caching optimieren, tiefe Kopien vermeiden und Schleifenabwicklung durchführen. Praktischer Fall: Bei der Suche nach der maximalen Elementposition eines Arrays werden nach der Optimierung die binäre Suche und die Schleifenerweiterung verwendet, was die Leistung erheblich verbessert.

Go ist eine immer beliebter werdende Programmiersprache, die einfach zu schreiben, leicht zu lesen und zu warten ist und gleichzeitig fortgeschrittene Programmierkonzepte unterstützt. Zeitkomplexität und Raumkomplexität sind wichtige Konzepte in der Algorithmen- und Datenstrukturanalyse. Sie messen die Ausführungseffizienz und die Speichergröße eines Programms. In diesem Artikel konzentrieren wir uns auf die Analyse der Zeitkomplexität und Raumkomplexität in der Go-Sprache. Zeitkomplexität Zeitkomplexität bezieht sich auf die Beziehung zwischen der Ausführungszeit eines Algorithmus und der Größe des Problems. Die Zeit wird normalerweise in der Big-O-Notation ausgedrückt

Der Einsatz von Datenstrukturen und Algorithmen ist im Cloud Computing von entscheidender Bedeutung, um riesige Datenmengen zu verwalten und zu verarbeiten. Zu den gängigen Datenstrukturen gehören Arrays, Listen, Hash-Tabellen, Bäume und Diagramme. Zu den häufig verwendeten Algorithmen gehören Sortieralgorithmen, Suchalgorithmen und Diagrammalgorithmen. Mithilfe der Leistungsfähigkeit von Java können Entwickler Java-Sammlungen, threadsichere Datenstrukturen und Apache-Commons-Sammlungen verwenden, um diese Datenstrukturen und Algorithmen zu implementieren.
