PHP實現常用的排序和兩個查詢

2021-07-28 04:58:24 字數 1710 閱讀 2784

//php氣泡排序法

function

bubblesort

(&$arr)

}if(!$flag)

$flag=false;

}}

//php選擇排序法   效率比冒泡要高

function

selectsort

(&$arr)

}//最後交換

$temp=$arr[$i];

$arr[$i]=$arr[$minindex];

$arr[$minindex]=$temp;

}}

//插入排序法(小到大排序)   效率又比  選擇排序法要高一些

function

insertsort

(&$arr)

//插入(這時就給$inserindex找到適當的位置)

$arr[$inserindex+1] = $insertval;

}}

/**

* 快速排序方法

* php快速排序方法

* $order asc 小到大 desc大到小 預設是asc

* $order 的值只能為 asc desc 如果亂寫乙個值也是按asc排序的

*/function

quicksort2

($arr,$order = 'asc')

else

} $arr_left = quicksort($arr_left,$order);

$arr_right = quicksort($arr_right,$order);

return array_merge($arr_left,array($val),$arr_right);

}

//下面是查詢

$arr=array(46,90,900,0,-1);

//這是按順序查詢

function

search

(&$arr,$findval)

}if(!$flag)

}

//呼叫二分查詢

$arr=array(0,90,900,99990);//注意,一定要是有序的

binaryswarch($arr,90,0,count($arr)-1);

//二分查詢函式,它有乙個前提,查詢的陣列必須是有序的

function

binarysearch

(&$arr,$findval,$leftindex,$rightindex)

//首先找到中間這個數 round是出於如果出現小數,四捨五入

$middleindex=round(($rightindex+$leftindex)/2);

//如果大於則向後面找

if($findval > $arr[$middleindex])else

if($findval

< $arr[$middleindex])else

}

function

bin_sch

($array, $low, $high, $k)elseif ($k

< $array[$mid])else

}return -1;

}

php 常用的兩個設計模式

b 1.工廠模式 b 工廠模式提供了乙個在實時狀態下例項化物件的機制。class creditcardprocessor return new provider cc creditcardprocessor factory paypal 執行結果如下圖所示 img b 2.單例模式 b 單例模式在確...

PHP實現合併兩個排序鍊錶的方法

問題 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解決思路 簡單的合併排序。由於兩個數列本來就是遞增的,所以每次將兩個數列中較小的部分拿過來就可以了。實現 function merge phead1,phead2 else www.cppcns.com...

實現兩個DataTable的聯合查詢

原來聯合查詢的基礎是這樣的。如方法一描述 將子表的陣列追加到主表陣列的下面。從而實現類似於檢視 單錶 的效果。那麼left join inner join 和right join outer join 將如何實現呢?明天仔細考慮下,看看有沒有辦法。不用任何sql語句的 方法一 public data...