Inhaltsverzeichnis
PHP实现四种基本排序算法,php四种算法
Heim php教程 php手册 PHP实现四种基本排序算法,php四种算法

PHP实现四种基本排序算法,php四种算法

Jun 13, 2016 am 09:09 AM
冒泡排序

PHP实现四种基本排序算法,php四种算法

许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。 

前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。 
$arr(1,43,54,62,21,66,32,78,36,76,39); 
1. 冒泡排序 

思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

代码实现: 

Java代码 
  1. $arr=array(1,43,54,62,21,66,32,78,36,76,39);   
  2. function bubbleSort($arr)  
  3. {   
  4. $len=count($arr);  
  5. //该层循环控制 需要冒泡的轮数  
  6. for($i=1;$i
  7. //该层循环用来控制每轮 冒出一个数 需要比较的次数  
  8. for($k=0;$k
  9. {  
  10. if($arr[$k]>$arr[$k+1])  
  11. {  
  12. $tmp=$arr[$k+1];  
  13. $arr[$k+1]=$arr[$k];  
  14. $arr[$k]=$tmp;  
  15. }  
  16. }  
  17. }  
  18. return $arr;  
  19. }  


2.选择排序 

思路分析:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 

代码实现: 

Java代码 
  1. function selectSort($arr) {  
  2. //双重循环完成,外层控制轮数,内层控制比较次数  
  3. $len=count($arr);  
  4. for($i=0; $i1; $i++) {  
  5. //先假设最小的值的位置  
  6. $p = $i;  
  7.   
  8. for($j=$i+1; $j
  9. //$arr[$p] 是当前已知的最小值  
  10. if($arr[$p] > $arr[$j]) {  
  11. //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。  
  12. $p = $j;  
  13. }  
  14. }  
  15. //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。  
  16. if($p != $i) {  
  17. $tmp = $arr[$p];  
  18. $arr[$p] = $arr[$i];  
  19. $arr[$i] = $tmp;  
  20. }  
  21. }  
  22. //返回最终结果  
  23. return $arr;  
  24. }  


3.插入排序 

思路分析:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 
代码实现: 

Java代码 
  1. function insertSort($arr) {  
  2. $len=count($arr);   
  3. for($i=1, $i
  4. $tmp = $arr[$i];  
  5. //内层循环控制,比较并插入  
  6. for($j=$i-1;$j>=0;$j--) {  
  7. if($tmp 
  8. //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换  
  9. $arr[$j+1] = $arr[$j];  
  10. $arr[$j] = $tmp;  
  11. else {  
  12. //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。  
  13. break;  
  14. }  
  15. }  
  16. }  
  17. return $arr;  
  18. }  


4.快速排序 

思路分析:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。 

代码实现: 

Java代码 
    1. function quickSort($arr) {  
    2. //先判断是否需要继续进行  
    3. $length = count($arr);  
    4. if($length 1) {  
    5. return $arr;  
    6. }  
    7. //选择第一个元素作为基准  
    8. $base_num = $arr[0];  
    9. //遍历除了标尺外的所有元素,按照大小关系放入两个数组内  
    10. //初始化两个数组  
    11. $left_array = array(); //小于基准的  
    12. $right_array = array(); //大于基准的  
    13. for($i=1; $i
    14. if($base_num > $arr[$i]) {  
    15. //放入左边数组  
    16. $left_array[] = $arr[$i];  
    17. else {  
    18. //放入右边  
    19. $right_array[] = $arr[$i];  
    20. }  
    21. }  
    22. //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数  
    23. $left_array = quick_sort($left_array);  
    24. $right_array = quick_sort($right_array);  
    25. //合并  
    26. return array_merge($left_array, array($base_num), $right_array);  
    27. }  
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Transformieren Sie Code mit C++-Funktionszeigern: Verbessern Sie Effizienz und Wiederverwendbarkeit Transformieren Sie Code mit C++-Funktionszeigern: Verbessern Sie Effizienz und Wiederverwendbarkeit Apr 29, 2024 pm 06:45 PM

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.

Java-Datenstrukturen und -Algorithmen: ausführliche Erklärung Java-Datenstrukturen und -Algorithmen: ausführliche Erklärung May 08, 2024 pm 10:12 PM

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 Blasensortierungsalgorithmus in C# So implementieren Sie den Blasensortierungsalgorithmus in C# Sep 19, 2023 am 11:10 AM

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

Anleitung zum Schreiben eines benutzerdefinierten Sortieralgorithmus für PHP-Arrays Anleitung zum Schreiben eines benutzerdefinierten Sortieralgorithmus für PHP-Arrays Apr 27, 2024 pm 06:12 PM

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ätsanalyse verschiedener PHP-Array-Sortieralgorithmen Komplexitätsanalyse verschiedener PHP-Array-Sortieralgorithmen Apr 27, 2024 am 09:03 AM

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

Algorithmenauswahl- und Optimierungstechniken bei der Leistungsoptimierung von C++-Funktionen Algorithmenauswahl- und Optimierungstechniken bei der Leistungsoptimierung von C++-Funktionen Apr 23, 2024 pm 06:18 PM

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.

Analysieren Sie Zeitkomplexität und Raumkomplexität in der Go-Sprache Analysieren Sie Zeitkomplexität und Raumkomplexität in der Go-Sprache Mar 27, 2024 am 09:24 AM

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

Java-Datenstrukturen und -Algorithmen: Ein praktischer Leitfaden zum Cloud Computing Java-Datenstrukturen und -Algorithmen: Ein praktischer Leitfaden zum Cloud Computing May 09, 2024 am 08:12 AM

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.

See all articles