PHP排序算法的回顾与总结
复制代码代码如下所示:
< PHP
*
*插入排序(一维数组)
*将已排序的数据元素插入已排列在前排的序列中的适当位置,以便序列仍处于有序状态。在插入所有要排序的数据元素之前。
* /
函数插入排序($ ARR){
如果(!is_array($ ARR)| |计数($ ARR)= = 0){
返回的数组;
}
$count =计数($ ARR);
($ i = 1;$ i <计数;$ + +){
如果(isset($ ARR {我})){
TMP =美元美元美元ARR {我}; / /元素的访问的价值
$ = i $ 1;在前面。
而($ ARR { $ J } > $ TMP){ / /如果前一个比一个大,这是从大到小
$ ARR { $ J + 1 } = {,} ARR美元美元; / /小元素,在交流前,直到下一个移动到正确的位置移动
ARR { } =美元美元美元,TMP;
美元—;
}
}
}
返回的数组;
}
U3000 U3000
*
*选择排序(一维数组)
*从要排序的每个数据元素中选择最小(最大)元素,然后将其放置在有序序列的末端,直到所有的数据元素被整理出来为止。
* /
功能选择排序($ ARR){
如果(!is_array($ ARR)| |计数($ ARR)= = 0)
{
返回的数组;
}
$count =计数($ ARR);
($ i = 0;$ i <计数;$ + +){
美元=我;
对于($ = $ i + 1;$ j $计数;$ + +){
如果($ ARR { $ K } > $ ARR { $ J })
美元= J; /找到最小的
如果(k)!= $ i){
$tmp = $arr{$i};
ARR {我} =美元美元美元美元K ARR { };
ARR { } = K美元美元美元的TMP;
}
}
}
返回的数组;
}
*
*冒泡排序(一维数组)
* 22比较要排序的数据元素的大小,并发现在没有逆序数据元素之前,这两个数据元素的顺序被切换到相反的顺序。
* /
功能的冒泡排序($array){
计数=(数组);
如果(计算$ = 0){
返回false;
}
($ i = 0;$ i <计数;$ + +){
为(J = $ count-1;J > $我;J—){
如果(数组$ { $ J } <数组$ { $ J-1 }){ / /比较的数字交换
$ = $数组{ $ };
数组$ { $ J } =数组{ $ J-1 };
数组$ { $ J-1 } = $ TMP;
}
}
}
返回数组;
}
U3000 U3000
*
*快速排序(一维数组)
*
* /
功能快速排序($array){
如果(计数(数组)< = 1){
返回数组;
}
$ = $数组{ 0 };
left_arr美元=阵();
right_arr美元=阵();
对于($ i = 1;$ i <计数(数组);$ + +){
如果(数组{ $ i }键){
left_arr美元{ } =数组{ $我};
其他{ }
right_arr美元{ } =数组{ $我};
}
}
left_arr美元= quicksort($ left_arr);
right_arr美元= quicksort($ right_arr);
返回array_merge($ left_arr,阵列($键),right_arr美元);
}
*按元素的值排序
* strorder ASC升序降序降序降序
* /
功能sortbyval($ ARR,strorder美元= 'asc)
{
如果(!is_array($ ARR)| |计数($ ARR)= = 0)
{
返回的数组;
}
arrreturn美元=阵();
foreach(ARR美元美元美元关键= > Val)
{
arrkey美元{ } =美元关键;
arrval { } =瓦尔美元美元;
}
$count =计数($ arrval);
如果(计数)
{
创建一个键顺序的数组。
对于($ = 0;键$ <计数;键+ +)
{
arrkeymap美元美元美元} = {关键的关键;
}
/排序值
($ i = 0;$ i;
{
为(J = $ count-1;J > $我;J——)
{
在修改后的提升中从小到大排列。
表明美元strorder = = 'asc美元美元美元美元,arrval { } { }美元arrval J-1;
如果($ BOL){
美元美元美元arrval TMP = {,};
{ } = J arrval美元美元美元美元arrval J-1 } {;
arrval美元美元美元} = { J-1 TMP;
键阵列相互作用引起冒泡排序的值
keytmp美元美元美元arrkeymap {,} =;
{ } = J arrkeymap美元美元美元美元arrkeymap J-1 } {;
arrkeymap美元美元美元keytmp J-1 } = {;
}
}
}
如果(计数($ arrkeymap))
{
foreach(arrkeymap美元美元价值)
{
arrreturn美元{ } = { } arrkey美元美元价值;
}
}
返回的arrreturn;
}
}
*数组是由使用本机函数的值排列的。
* /
功能arraysortbyval(ARR美元美元美元,钥匙型= 'asc){
keysvalue美元=美元new_array =阵();
foreach(ARR美元美元美元K = > v){
keysvalue美元{ $ K } = { } $ $ V键;
}
如果(合型= = 'asc){
Asort(keysvalue美元);
其他{ }
Arsort(keysvalue美元);
}
复位($ keysvalue);
foreach(keysvalue美元美元美元K = > v){
new_array美元{ $ K } = { } $ K $ ARR;
}
返回的new_array;
}
对于2阶的数组值法,下面是一个实现自己使用PHP函数的本机,对于少量的数据实际上是排序的单页数据或可以,如果涉及到大量的数据排序,建议可以集成到mysql类的基础上。