真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php數(shù)據(jù)結(jié)構(gòu)算法實(shí)例 php 數(shù)據(jù)處理

php幾種排序算法實(shí)例詳解

四種排序算法的PHP實(shí)現(xiàn):

創(chuàng)新互聯(lián)長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為廣豐企業(yè)提供專業(yè)的網(wǎng)站制作、做網(wǎng)站,廣豐網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

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

每次將一個(gè)待排序的記錄,按其關(guān)鍵字大小插入到前面已經(jīng)排好序的子文件中的適當(dāng)位置,直到全部記錄插入完成為止。

2)?選擇排序(Selection?Sort)的基本思想是:?

每一趟從待排序的記錄中選出關(guān)鍵字最小的記錄,順序放在已排好序的子文件的最后,直到全部記錄排序完畢。

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

兩兩比較待排序記錄的關(guān)鍵字,發(fā)現(xiàn)兩個(gè)記錄的次序相反時(shí)即進(jìn)行交換,直到?jīng)]有反序的記錄為止。

4)?快速排序?qū)嵸|(zhì)上和冒泡排序一樣,都是屬于交換排序的一種應(yīng)用。所以基本思想和上面的冒泡排序是一樣的。

1.?sort.php文件如下:

?php

class?Sort?{

private?$arr??=?array();?

private?$sort??=?'insert';

private?$marker?=?'_sort';

private?$debug?=?TRUE;

/**

*?構(gòu)造函數(shù)

*

*?@param??array??例如:

$config?=?array?(

'arr'?=?array(22,3,41,18)?,?//需要排序的數(shù)組值

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

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

)

*/

public?function?construct($config?=?array())?{

if?(?count($config)??0)?{

$this-_init($config);

}

}

/**

*?獲取排序結(jié)果

*/

public?function?display()?{

return?$this-arr;

}

/**

*?初始化

*

*?@param??array

*?@return?bool

*/

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

//參數(shù)判斷

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;

}

}

//調(diào)用相應(yīng)的成員方法完成排序

$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)?{

//參數(shù)判斷

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

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

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

}

return?FALSE;

}

//具體實(shí)現(xiàn)

$count?=?count($arr);

for?($i?=?1;?$i??$count;?$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)?{

//參數(shù)判斷

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

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

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

}

return?FALSE;

}

//具體實(shí)現(xiàn)

$count?=?count($arr);

for?($i?=?0;?$i??$count-1;?$i++)?{

$min?=?$i;

for?($j?=?$i+1;?$j??$count;?$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)?{

//參數(shù)判斷

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

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

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

}

return?FALSE;

}

//具體實(shí)現(xiàn)

$count?=?count($arr);

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

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

if?($arr[$j]??$arr[$j-1])?{

$tmp?=?$arr[$j];

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

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

}

}

}

return?$arr;??

}

/**

*?快速排序

*?@by?

*?@param??array

*?@return?bool

*/

private?function?quick_sort($arr)?{

//具體實(shí)現(xiàn)

if?(count($arr)?=?1)?return?$arr;?

$key?=?$arr[0];

$left_arr?=?array();

$right_arr?=?array();

for?($i?=?1;?$i??count($arr);?$i++){

if?($arr[$i]?=?$key)

$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文件如下:

?php

require_once('sort.php');

$config?=?array?(

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

//需要排序的數(shù)組值

'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數(shù)組遍歷類與用法示例

本文實(shí)例講述了php數(shù)組遍歷類與用法。分享給大家供大家參考,具體如下:

?php

class

scanArray{

public

$arr;

public

$where;

private

$str;

public

function

scan($arr,$where="array"){

$this-arr

=

$arr;

$this-where

=

$where;

foreach($this-arr

as

$k=$v){

if(is_array($v)){

$this-where

=

($this-where)."[{$k}]";

$this-scan($v,$this-where);

}else{

$this-str

.=

$this-where."[{$k}]=".$v.'br

/';

}

}

return

$this-str;

}

function

__destruct(){

unset($this-arr);

unset($this-where);

}

}

$a

=

array('g'="a",'vv'=array("b"="b","l"="c","xx"=array("e","g")));

$ah

=

new

scanArray();

$b

=

$ah-scan($a);

echo

$b;

運(yùn)行結(jié)果:

array[g]=a

array[vv][b]=b

array[vv][l]=c

array[vv][xx][0]=e

array[vv][xx][1]=g

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》及《PHP常用遍歷算法與技巧總結(jié)》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:PHP遍歷數(shù)組的方法匯總PHP

數(shù)組遍歷方法大全(foreach,list,each)PHP

數(shù)組遍歷foreach語(yǔ)法結(jié)構(gòu)及實(shí)例PHP中多維數(shù)組的foreach遍歷示例php實(shí)現(xiàn)遍歷多維數(shù)組的方法PHP中使用foreach()遍歷二維數(shù)組的簡(jiǎn)單實(shí)例PHP遍歷數(shù)組的三種方法及效率對(duì)比分析PHP實(shí)現(xiàn)的操作數(shù)組類庫(kù)定義與用法示例PHP數(shù)組操作類實(shí)例PHP數(shù)組生成XML格式數(shù)據(jù)的封裝類實(shí)例

PHP實(shí)現(xiàn)插入排序算法

插入排序(Insertion Sort) 是一種較穩(wěn)定 簡(jiǎn)單直觀的排序算法 插入排序的工作原理 是通過(guò)構(gòu)建有序序列 對(duì)于未排序的數(shù)據(jù) 在有序序列中從后向前掃描 找到合適的位置并將其插入 插入排序 在最好情況下 時(shí)間復(fù)雜度為O(n);在最壞情況下 時(shí)間復(fù)雜度為O(n );平均時(shí)間復(fù)雜度為O(n )

插入排序示例圖

/**

* 數(shù)據(jù)結(jié)構(gòu)與算法(PHP實(shí)現(xiàn)) - 插入排序(Insertion Sort)。Tw.WiNGwit

*

* @author 創(chuàng)想編程(TOPPHP.ORG)

* @copyright Copyright (c) 2013 創(chuàng)想編程(TOPPHP.ORG) All Rights Reserved

* @license /licenses/mit-license.php MIT LICENSE

* @version 1.0.0 - Build20130613

*/

class InsertionSort {

/**

* 需要排序的數(shù)據(jù)數(shù)組。

*

* @var array

*/

private $data;

/**

* 數(shù)據(jù)數(shù)組的長(zhǎng)度。

*

* @var integer

*/

private $size;

/**

* 數(shù)據(jù)數(shù)組是否已排序。

*

* @var boolean

*/

private $done;

/**

* 構(gòu)造方法 - 初始化數(shù)據(jù)。

*

* @param array $data 需要排序的數(shù)據(jù)數(shù)組。

*/

public function __construct(array $data) {

$this-data = $data;

$this-size = count($this-data);

$this-done = FALSE;

}

/**

* 插入排序。

*/

private function sort() {

$this-done = TRUE;

for ($i = 1; $i $this-size; ++$i) {

$current = $this-data[$i];

if ($current $this-data[$i - 1]) {

for ($j = $i - 1; $j = 0 $this-data[$j] $current; --$j) {

$this-data[$j + 1] = $this-data[$j];

}

$this-data[$j + 1] = $current;

}

}

}

/**

* 獲取排序后的數(shù)據(jù)數(shù)組。

*

* @return array 返回排序后的數(shù)據(jù)數(shù)組。

*/

public function getResult() {

if ($this-done) {

return $this-data;

}

$this-sort();

return $this-data;

}

}

?

示例代碼 1

2

3

4

$insertion = new InsertionSort(array(9, 1, 5, 3, 2, 8, 6));

echo '

', print_r($insertion-getResult(), TRUE), '

'; lishixinzhi/Article/program/PHP/201311/20783


網(wǎng)頁(yè)名稱:php數(shù)據(jù)結(jié)構(gòu)算法實(shí)例 php 數(shù)據(jù)處理
本文路徑:http://weahome.cn/article/doeichj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部