Heim Backend-Entwicklung PHP-Tutorial PHP数组排序算法小结

PHP数组排序算法小结

Jun 20, 2016 pm 01:05 PM
php数组

PHP中对数组的元素进行排序,这个是很经常用到的,之前的项目中也有,而且对于几种排序我们都是用的是asort  arsort 等PHP原生函数,没有自己去实现,所以就对一下的几个函数进行总结,这个会不断的进行补充,自己也可以好好的复习和总结。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

/*

 * 插入排序(一维数组)

 * 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当的位置,使数列依然有序;直到待排序的数据元素全部插入完成为止。

 */

function insertSort($arr){

    if(!is_array($arr) ||count($arr)==0){

        return $arr;

    }

    $count =count($arr);

    for($i=1;$i<$count;$i++){

        if(isset($arr[$i])){

       $tmp =$arr[$i];//获取后一个元素的值

       $j =$i - 1;//获取前面的下标

       while($arr[$j] >$tmp){//如果前面一个比后面一个大, 这里是从小到大

           $arr[$j+1] =$arr[$j];//把小的元素和前面的对换,直到移动到合适的位置,在移动下一个

           $arr[$j] =$tmp;

           $j--;

        }

        }

    }

    return $arr;

}

/*

 * 选择排序(一维数组)

 * 每一趟从待排序的数据元素中选出最小(最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

 */

function selectSort($arr){

    if(!is_array($arr) ||count($arr) == 0)

    {

        return $arr;

    }

    $count =count($arr);

    for($i=0;$i<$count;$i++){

        $k =$i;

        for($j=$i+1;$j<$count;$j++){

      if ($arr[$k] >$arr[$j])

        $k =$j;//找出最小的

       if ($k !=$i){

           $tmp =$arr[$i];

           $arr[$i] =$arr[$k];

           $arr[$k] =$tmp;

          }

       }

    }

    return $arr;

}

  

/*  

 * 冒泡排序(一维数组)

 * 两两比较待排序数据元素的大小,发现两个数据元素的次序相反即进行交换,直到没有反序的数据元素为止

 */

function bubbleSort($array){

    $count =count($array);

    if ($count <= 0) {

        return false;

    }

    for($i=0;$i<$count;$i++){

        for($j=$count-1;$j>$i;$j--){

           if ($array[$j] <$array[$j-1]){//比较找到的数进行交换

            $tmp =$array[$j];

            $array[$j] =$array[$j-1];

            $array[$j-1] =$tmp;

           }

        }

    }

    return $array;

}

/*

 * 快速排序(一维数组)

 *

 */

function quickSort($array){

    if (count($array) <= 1){

        return $array;

    }

    $key =$array[0];

    $left_arr =array();

    $right_arr =array();

    for ($i=1;$i<count($array);$i++){

      if ($array[$i] <=$key){

           $left_arr[] =$array[$i];

      }else{

         $right_arr[] =$array[$i];

        }

    }

    $left_arr = quickSort($left_arr);

    $right_arr = quickSort($right_arr);

    return array_merge($left_arr,array($key),$right_arr);

}

  

/**

  * 按照元素的值进行排序

  * strOrder 为排列的顺序 asc 升序  desc 降序

  */

function sortByVal($arr,$strOrder=&#39;asc&#39;)

{

    if(!is_array($arr) ||count($arr)==0)

    {

        return $arr;

    }

  

    $arrReturn =array();

    foreach($arr as $key=>$val)

    {

        $arrKey[] =$key;

        $arrVal[] =$val;

    }

  

    $count =count($arrVal);

    if($count)

    {

        //创建key的顺序数组

        for($key=0;$key<$count;$key++)

        {

            $arrKeyMap[$key] =$key;

        }

        //对值进行排序

        for($i=0;$i<$count;$i++)

        

              

            for($j =$count-1;$j>$i;$j--)

            {

                //<从小到大排列 升降在这修改

                $bol =$strOrder ==&#39;asc&#39; ?$arrVal[$j]<$arrVal[$j-1] :$arrVal[$j]>$arrVal[$j-1];

                if($bol){

                    $tmp =$arrVal[$j];

                    $arrVal[$j] =$arrVal[$j-1];

                    $arrVal[$j-1] =$tmp;

                    //值的冒泡排序,引起key的数组的交互  

                    $keytmp =$arrKeyMap[$j];

                    $arrKeyMap[$j] =$arrKeyMap[$j-1];

                    $arrKeyMap[$j-1] =$keytmp;

                }

            }

        }

        if(count($arrKeyMap))

        {

            foreach ($arrKeyMap as $val)

            {

                    $arrReturn[] =$arrKey[$val];

            }

        }

        return $arrReturn;

    }

}

  

  

/**

  * 使用原生的函数进行数组按照值进行排列

  */

function arraySortByVal($arr,$keys,$type=&#39;asc&#39;){

    $keysvalue =$new_array =array();

    foreach ($arr as $k=>$v){

        $keysvalue[$k] =$v[$keys];

    }

    if($type ==&#39;asc&#39;){

        asort($keysvalue);

    }else{

        arsort($keysvalue);

    }

    reset($keysvalue);

    foreach ($keysvalue as $k=>$v){

        $new_array[$k] =$arr[$k];

    }

    return $new_array;

Nach dem Login kopieren

 

对于下面的2个对于array的值进行排序的方法一个是自己实现的一个是使用了原生的PHP函数的,其实排序对于少量数据一般就单页的数据量的数据还是可以的,如果涉及到大量的数据的排序,建议可以整合到MYSQL的基础类中来进行。

 


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)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate 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)

So verwenden Sie PHP-Arrays zum Generieren und Anzeigen von Diagrammen und statistischen Grafiken So verwenden Sie PHP-Arrays zum Generieren und Anzeigen von Diagrammen und statistischen Grafiken Jul 15, 2023 pm 12:24 PM

So verwenden Sie PHP-Arrays zum Generieren und Anzeigen von Diagrammen und statistischen Grafiken. PHP ist eine weit verbreitete serverseitige Skriptsprache mit leistungsstarken Datenverarbeitungs- und Grafikgenerierungsfunktionen. In der Webentwicklung müssen wir häufig Diagramme und statistische Diagramme von Daten anzeigen. Mithilfe von PHP-Arrays können wir diese Funktionen problemlos implementieren. In diesem Artikel wird die Verwendung von PHP-Arrays zum Generieren und Anzeigen von Diagrammen und statistischen Grafiken vorgestellt und relevante Codebeispiele bereitgestellt. Einführung der notwendigen Bibliotheksdateien und Stylesheets Bevor wir beginnen, müssen wir einige notwendige Bibliotheksdateien in die PHP-Datei einführen

So verwenden Sie PHP-Arrays zum Generieren dynamischer Diashows und Bildanzeigen So verwenden Sie PHP-Arrays zum Generieren dynamischer Diashows und Bildanzeigen Jul 15, 2023 pm 01:17 PM

So verwenden Sie PHP-Arrays zum Generieren dynamischer Diashows und Bildanzeigen. Diashows und Bildanzeigen sind gängige Funktionen im Webdesign und werden häufig in Szenarien wie Karussells und Galerieanzeigen verwendet. Als beliebte serverseitige Skriptsprache verfügt PHP über die Fähigkeit, Daten zu verarbeiten und dynamische HTML-Seiten zu generieren, und eignet sich sehr gut für die Erstellung dynamischer Diashows und Bildanzeigen. In diesem Artikel wird die Verwendung von PHP-Arrays zum Generieren dynamischer Diashows und Bildanzeigen vorgestellt und entsprechende Codebeispiele gegeben. Bilddaten vorbereiten Zuerst müssen wir einen Satz Bildpfaddaten vorbereiten

Welche Funktionen gibt es für die Mittelung von Arrays in PHP? Welche Funktionen gibt es für die Mittelung von Arrays in PHP? Jul 17, 2023 pm 04:03 PM

Zu den PHP-Array-Mittelungsfunktionen gehören: 1. array_sum(), mit dem die Summe aller Werte im Array berechnet wird. Um den Durchschnitt zu berechnen, können Sie alle Werte im Array addieren und dann durch dividieren die Anzahl der Array-Elemente; 2, array_reduce(), wird verwendet, um das Array zu iterieren und jeden Wert mit einem Anfangswert zu berechnen. 3. array_mean(), wird verwendet, um den Durchschnitt des Arrays zurückzugeben, zuerst die Summe des Arrays zu berechnen und Berechnen Sie die Anzahl der Array-Elemente und dividieren Sie dann die Summe durch die Anzahl der Array-Elemente, um den Durchschnitt zu erhalten.

So verwenden Sie PHP-Arrays zur Implementierung von Benutzeranmeldungs- und Berechtigungsverwaltungsfunktionen So verwenden Sie PHP-Arrays zur Implementierung von Benutzeranmeldungs- und Berechtigungsverwaltungsfunktionen Jul 15, 2023 pm 08:55 PM

Verwendung von PHP-Arrays zur Implementierung von Benutzeranmeldungs- und Berechtigungsverwaltungsfunktionen Bei der Entwicklung einer Website sind Benutzeranmeldung und Berechtigungsverwaltung eine der sehr wichtigen Funktionen. Durch die Benutzeranmeldung können wir Benutzer authentifizieren und die Sicherheit der Website schützen. Durch das Berechtigungsmanagement können die Bedienberechtigungen der Benutzer auf der Website gesteuert werden, um sicherzustellen, dass Benutzer nur auf die Funktionen zugreifen können, für die sie berechtigt sind. In diesem Artikel stellen wir vor, wie Sie PHP-Arrays verwenden, um Benutzeranmeldungs- und Berechtigungsverwaltungsfunktionen zu implementieren. Wir werden diesen Prozess anhand eines einfachen Beispiels demonstrieren. Zuerst müssen wir erstellen

Was sind PHP-Array-Schlüssel-Wert-Paare? Was sind PHP-Array-Schlüssel-Wert-Paare? Aug 03, 2023 pm 02:20 PM

Das Schlüssel-Wert-Paar eines PHP-Arrays ist eine Datenstruktur, die aus einem Schlüssel und einem entsprechenden Wert besteht. Der Schlüssel ist die Kennung des Array-Elements und der Wert sind die mit dem Schlüssel verknüpften Daten. Es ermöglicht uns, Daten mithilfe von Schlüsseln als Bezeichner zu speichern und darauf zuzugreifen. Durch die Verwendung von Schlüssel-Wert-Paaren können wir Elemente im Array einfacher bedienen und verwalten, was die Programmentwicklung flexibler und effizienter macht.

Eine Untersuchung der Leistungsoptimierungstechniken für PHP-Arrays Eine Untersuchung der Leistungsoptimierungstechniken für PHP-Arrays Mar 13, 2024 pm 03:03 PM

PHP-Array ist eine sehr häufige Datenstruktur, die häufig während des Entwicklungsprozesses verwendet wird. Mit zunehmender Datenmenge kann die Array-Leistung jedoch zu einem Problem werden. In diesem Artikel werden einige Techniken zur Leistungsoptimierung für PHP-Arrays untersucht und spezifische Codebeispiele bereitgestellt. 1. Verwenden Sie geeignete Datenstrukturen. In PHP gibt es zusätzlich zu gewöhnlichen Arrays einige andere Datenstrukturen wie SplFixedArray, SplDoublyLinkedList usw., die in bestimmten Situationen möglicherweise eine bessere Leistung als gewöhnliche Arrays erbringen.

So konvertieren Sie ein zweidimensionales PHP-Array in ein eindimensionales Array So konvertieren Sie ein zweidimensionales PHP-Array in ein eindimensionales Array Aug 03, 2023 am 11:14 AM

So konvertieren Sie ein PHP-Array von zwei Dimensionen in ein eindimensionales Array: 1. Verwenden Sie die Schleifendurchquerung, um das zweidimensionale Array zu durchlaufen und jedes Element zum eindimensionalen Array hinzuzufügen. 2. Verwenden Sie die Funktion „array_merge“, um mehrere zusammenzuführen Arrays in ein Array, übergeben Sie das zweidimensionale Array als Parameter an die Funktion „array_merge“, um es in ein eindimensionales Array umzuwandeln. 3. Mit der Funktion „array_reduce“ können alle Werte im Array verarbeitet werden über eine Rückruffunktion und gab schließlich ein Ergebnis zurück.

So bestimmen Sie, wie viele Arrays es in PHP gibt So bestimmen Sie, wie viele Arrays es in PHP gibt Aug 04, 2023 pm 05:40 PM

Es gibt mehrere Möglichkeiten, ein Array in PHP zu ermitteln: 1. Verwenden Sie die Funktion count(), die für alle Arten von Arrays geeignet ist. Es ist jedoch zu beachten, dass die Funktion count() 0 zurückgibt, wenn der übergebene Parameter kein Array ist. Verwenden Sie die Funktion sizeof(), die eher zur Aufrechterhaltung der Kompatibilität mit anderen Programmiersprachen verwendet wird Funktionen: Durch die Verwendung einer Schleife zum Durchlaufen des Arrays wird der Zähler bei jedem Durchlaufen um 1 erhöht und schließlich die Länge des Arrays ermittelt. Benutzerdefinierte Funktionen können entsprechend den tatsächlichen Anforderungen geändert und erweitert werden, wodurch sie flexibler werden.

See all articles