suchen
HeimBackend-EntwicklungPHP-TutorialPHP排序算法类实例_PHP教程

PHP排序算法类实例_PHP教程

Jul 13, 2016 am 09:50 AM
phpspezifisch分享实例排序算法

PHP排序算法类实例

   本文实例讲述了PHP排序算法类。分享给大家供大家参考。具体如下:

  四种排序算法的PHP实现:

  1) 插入排序(Insertion Sort)的基本思想是:

  每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

  2) 选择排序(Selection Sort)的基本思想是:

  每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。

  3) 冒泡排序的基本思想是:

  两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

  4) 快速排序实质上和冒泡排序一样,都是属于交换排序的一种应用。所以基本思想和上面的冒泡排序是一样的。

  1. sort.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

166

167

168

169

170

171

172

173

174

175

176

177

178

179



/**

*

* @author quanshuidingdang

*/

class Sort {

private $arr = array();

private $sort = 'insert';

private $marker = '_sort';

private $debug = TRUE;

/**

* 构造函数

*

* @param array 例如:

$config = array (

'arr' => array(22,3,41,18) , //需要排序的数组值

'sort' => 'insert', //可能值: insert, select, bubble, quick

'debug' => TRUE //可能值: TRUE, FALSE

)

*/

public function __construct($config = array()) {

if ( count($config) > 0) {

$this->_init($config);

}

}

/**

* 获取排序结果

*/

public function display() {

return $this->arr;

}

/**

* 初始化

*

* @param array

* @return bool

*/

private function _init($config = array()) {

//参数判断

if ( !is_array($config) OR count($config) == 0) {

if ($this->debug === TRUE) {

$this->_log("sort_init_param_invaild");

}

return FALSE;

}

//初始化成员变量

foreach ($config as $key => $val) {

if ( isset($this->$key)) {

$this->$key = $val;

}

}

//调用相应的成员方法完成排序

$method = $this->sort . $this->marker;

if ( ! method_exists($this, $method)) {

if ($this->debug === TRUE) {

$this->_log("sort_method_invaild");

}

return FALSE;

}

if ( FALSE === ($this->arr = $this->$method($this->arr)))

return FALSE;

return TRUE;

}

/**

* 插入排序

*

* @param array

* @return bool

*/

private function insert_sort($arr) {

//参数判断

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

if ($this->debug === TRUE) {

$this->_log("sort_array(insert)_invaild");

}

return FALSE;

}

//具体实现

$count = count($arr);

for ($i = 1; $i

$tmp = $arr[$i];

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

if($arr[$j] > $tmp) {

$arr[$j+1] = $arr[$j];

$arr[$j] = $tmp;

}

}

}

return $arr;

}

/**

* 选择排序

*

* @param array

* @return bool

*/

private function select_sort($arr) {

//参数判断

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

if ($this->debug === TRUE) {

$this->_log("sort_array(select)_invaild");

}

return FALSE;

}

//具体实现

$count = count($arr);

for ($i = 0; $i

$min = $i;

for ($j = $i+1; $j

if ($arr[$min] > $arr[$j]) $min = $j;

}

if ($min != $i) {

$tmp = $arr[$min];

$arr[$min] = $arr[$i];

$arr[$i] = $tmp;

}

}

return $arr;

}

/**

* 冒泡排序

*

* @param array

* @return bool

*/

private function bubble_sort($arr) {

//参数判断

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

if ($this->debug === TRUE) {

$this->_log("sort_array(bubble)_invaild");

}

return FALSE;

}

//具体实现

$count = count($arr);

for ($i = 0; $i

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

if ($arr[$j]

$tmp = $arr[$j];

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

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

}

}

}

return $arr;

}

/**

* 快速排序

*

* @param array

* @return bool

*/

private function quick_sort($arr) {

//具体实现

if (count($arr)

$key = $arr[0];

$left_arr = array();

$right_arr = array();

for ($i = 1; $i

if ($arr[$i]

$left_arr[] = $arr[$i];

else

$right_arr[] = $arr[$i];

}

$left_arr = $this->quick_sort($left_arr);

$right_arr = $this->quick_sort($right_arr);

 

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

}

/**

* 日志记录

*/

private function _log($msg) {

$msg = 'date[' . date('Y-m-d H:i:s') . '] ' . $msg . '\n';

return @file_put_contents('sort_err.log', $msg, FILE_APPEND);

}

}

/*End of file sort.php*/

/*Location htdocs/sort.php */

  2. sort_demo.php文件如下:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14



require_once('sort.php');

$config = array (

'arr' => array(23, 22, 41, 18, 20, 12, 200303,2200,1192) ,

//需要排序的数组值

'sort' => 'select',

//可能值: insert, select, bubble, quick

'debug' => TRUE

//可能值: TRUE, FALSE

);

$sort = new Sort($config);

//var_dump($config['arr']);

var_dump($sort->display());

/*End of php*/

  希望本文所述对大家的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1018376.htmlTechArticlePHP排序算法类实例 本文实例讲述了PHP排序算法类。分享给大家供大家参考。具体如下: 四种排序算法的PHP实现: 1) 插入排序(Insertion Sort...
Stellungnahme
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
PHP und Python: Verschiedene Paradigmen erklärtPHP und Python: Verschiedene Paradigmen erklärtApr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python: Ein tiefes Eintauchen in ihre GeschichtePHP und Python: Ein tiefes Eintauchen in ihre GeschichteApr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Wählen Sie zwischen PHP und Python: Ein LeitfadenWählen Sie zwischen PHP und Python: Ein LeitfadenApr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Frameworks: Modernisierung der SprachePHP und Frameworks: Modernisierung der SpracheApr 18, 2025 am 12:14 AM

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

Auswirkungen von PHP: Webentwicklung und darüber hinausAuswirkungen von PHP: Webentwicklung und darüber hinausApr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Apr 17, 2025 am 12:25 AM

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Apr 17, 2025 am 12:24 AM

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP vs. Python: Anwendungsfälle und AnwendungenPHP vs. Python: Anwendungsfälle und AnwendungenApr 17, 2025 am 12:23 AM

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

See all articles

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)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)