對需要排序的陣列從後往前(逆序)進行多遍的掃瞄,當發現相鄰的兩個數值的次序與排序要求的規則不一致時,就將這兩個數值進行交換。這樣比較小(大)的數值就將逐漸從後面向前面移動。
<?php
function
sorted_test
($arr)}
# 如果issort引數為true表示都已排好序不需要再進行排序,終止迴圈if(
$issort
)printf
(json_encode
($arr))
;print(""
);}return
$arr;}
$arr
=array
(225
,125
,115,65
,98,330,45
,30,5
,8);
//$arr = array(225,125,115,65,60,55,45,30,10,2);
var_dump
(sorted_test
($arr))
;
執行步驟:
在陣列中挑出乙個元素(多為第乙個)作為標尺,掃瞄一遍陣列將比標尺小的元素排在標尺之前,將所有比標尺大的元素排在標尺之後,通過遞迴將各子串行分別劃分為更小的序列直到所有的序列順序一致。
<?php
//快速排序
function
quick_sort
($arr
)$base_num
=$arr[0
];//選擇乙個標尺 選擇第乙個元素
//初始化兩個陣列
$left_array
=array()
;//小於標尺的
$right_array
=array()
;//大於標尺的
for($i=
1;$i<
$length;$i
++)else
}//再分別對 左邊 和 右邊的陣列進行相同的排序處理方式
//遞迴呼叫這個函式,並記錄結果
$left_array
=quick_sort
($left_array);
$right_array
=quick_sort
($right_array);
//合併左邊 標尺 右邊
return
array_merge
($left_array
,array
($base_num),
$right_array);
}$arr
=array(3
,10,2
,1,20
);var_dump
(quick_sort
($arr))
;
假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段中查詢;若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。(資料量大的時候使用)
<?php
function
bin_search
($arr
,$low
,$high,$k
)elseif
($arr
[$mid]==
$k)else
}return-1
;}$arr=[
1,2,
3,4,
5,6,
7,8]
;echo
bin_search
($arr,0
,7,4
);
從陣列的第乙個元素開始乙個乙個向下查詢,如果有和目標一致的元素,查詢成功;如果到最後乙個元素仍沒有目標元素,則查詢失敗。
<?php
//順序查詢
function
seq_search
($arr,$n
,$k)}
if($i
else
}$arr=[
9,30,
7,36,
19];$count
=count
($arr);
var_dump
(seq_search
($arr
,$count,36
));?>
php常用演算法
二分查詢 陣列裡查詢某個元素 function bin sch array,low,high,k elseif k array mid else return 1 順序查詢 陣列裡查詢某個元素 function seq sch array,n,k if i n else 線性表的刪除 陣列中實現 f...
PHP常用演算法
二維陣列的按某字段來排序 從小到大排序 function number array sort asc array,key name array multisort arr,sort asc,array return array 二維陣列的按某字段來排序 從大到小排序 function number ...
git 常用命令以及提交步驟
1 git init 在當前目錄新建乙個 庫。2 git config user.name git config user.email 設定 提交時候的資訊。3 git clone 需要clone 遠端位址 從伺服器端轉殖專案到本地 4 git status 檢視檔案修改狀態。5 git diff ...