recherche
Maisondéveloppement back-endtutoriel phpPHP实现四种根本排序算法

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. }  
1楼feimengv
不错的排序方法,重要的是合理使用,提高程序效率!
Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comment modifiez-vous les données stockées dans une session PHP?Comment modifiez-vous les données stockées dans une session PHP?Apr 27, 2025 am 12:23 AM

TomodifyDatainaphPSession, startTheSessionwithSession_start (), puis utilisez $ _sessiontoset, modifiez, orremovevariables.1) startTheSession.2) setorModifySessionVariblesusing $ _Session.3) retireVariableswithunset (). 4) ClearAllVariblesWithSession_unset (). 5).

Donnez un exemple de stockage d'un tableau dans une session PHP.Donnez un exemple de stockage d'un tableau dans une session PHP.Apr 27, 2025 am 12:20 AM

Les tableaux peuvent être stockés en séances PHP. 1. Démarrez la session et utilisez session_start (). 2. Créez un tableau et stockez-le en $ _SESSION. 3. Récupérez le tableau via $ _SESSION. 4. Optimiser les données de session pour améliorer les performances.

Comment fonctionne la collecte des ordures pour les séances PHP?Comment fonctionne la collecte des ordures pour les séances PHP?Apr 27, 2025 am 12:19 AM

La collecte de déchets de session PHP est déclenchée par un mécanisme de probabilité pour nettoyer les données de session expirées. 1) définir le cycle de vie de probabilité de déclenchement et de session dans le fichier de configuration; 2) Vous pouvez utiliser des tâches CRON pour optimiser les applications de haute charge; 3) Vous devez équilibrer la fréquence et les performances de collecte des ordures pour éviter la perte de données.

Comment pouvez-vous tracer l'activité de session en php?Comment pouvez-vous tracer l'activité de session en php?Apr 27, 2025 am 12:10 AM

Le suivi des activités de session utilisateur dans PHP est implémenté par la gestion de session. 1) Utilisez session_start () pour démarrer la session. 2) Stocker et accéder aux données via le tableau $ _SESSION. 3) Appelez session_destroy () pour mettre fin à la session. Le suivi des sessions est utilisé pour l'analyse du comportement des utilisateurs, la surveillance de la sécurité et l'optimisation des performances.

Comment pouvez-vous utiliser une base de données pour stocker les données de session PHP?Comment pouvez-vous utiliser une base de données pour stocker les données de session PHP?Apr 27, 2025 am 12:02 AM

L'utilisation de bases de données pour stocker les données de session PHP peut améliorer les performances et l'évolutivité. 1) Configurez MySQL pour stocker les données de session: configurez le processeur de session dans PHP.ini ou PHP Code. 2) Implémentez le processeur de session personnalisé: Définissez Open, Fermer, Lire, Écrire et d'autres fonctions pour interagir avec la base de données. 3) Optimisation et meilleures pratiques: utilisez l'indexation, la mise en cache, la compression des données et le stockage distribué pour améliorer les performances.

Expliquez le concept d'une session PHP en termes simples.Expliquez le concept d'une session PHP en termes simples.Apr 26, 2025 am 12:09 AM

PhpSessionsStrackUserDataacrossMultiplepageRequestSusingauniqueIdStoredInacookie.Here'showtomanageThememeChectively: 1) startAsessionwithSession_start () etstoredatain $ _session.2) RegenerateTheSessionidaFterloginWithSession_Regenereate_id (true) TopReventiSi

Comment parcourez-vous toutes les valeurs stockées dans une session PHP?Comment parcourez-vous toutes les valeurs stockées dans une session PHP?Apr 26, 2025 am 12:06 AM

En PHP, l'itération des données de session peut être obtenue via les étapes suivantes: 1. Démarrez la session à l'aide de session_start (). 2. Ilaster à travers la boucle FOREACH à travers toutes les paires de valeurs clés dans le tableau $ _SESSION. 3. Lors du traitement des structures de données complexes, utilisez des fonctions is_array () ou is_object () et utilisez print_r () pour produire des informations détaillées. 4. Lors de l'optimisation de la traversée, la pagination peut être utilisée pour éviter de traiter de grandes quantités de données en même temps. Cela vous aidera à gérer et à utiliser les données de session PHP plus efficacement dans votre projet réel.

Expliquez comment utiliser les sessions pour l'authentification des utilisateurs.Expliquez comment utiliser les sessions pour l'authentification des utilisateurs.Apr 26, 2025 am 12:04 AM

La session réalise l'authentification des utilisateurs via le mécanisme de gestion de l'état côté serveur. 1) Création de session et génération d'ID unique, 2) Les ID sont passés par des cookies, 3) les magasins de serveurs et accèdent aux données de session via IDS, 4) l'authentification des utilisateurs et la gestion de l'état sont réalisées, améliorant la sécurité des applications et l'expérience utilisateur.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel