PHP中排序算法原理是什么

  介绍

这篇文章主要介绍PHP中排序算法原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强>冒泡排序原理

原理描述:

一次比较俩个相邻的元素,大的元素后移,小的元素前移(交换位置)。直到找出最大的元素。就像是气泡一样,大的向下沉,小的向上冒。

流程:

有一个无序数组arr=美元(8、9、3、6、1,4]

第一次外循环:找出最大值9,要俩俩相比,比5次。   8 9 3 6 1 4第一次,8跟9比9大,所以没有交换位置。   8 3 9 6 1 4第二次,9跟3比9大,交换位置。   8 3 6 9 1 4第三次,9号跟6比9大,交换位置。   8 3 6 1 9 4第四次,9号跟1比9大,交换位置。   8 3 6 1 4 9第五次,9跟4比,9大,交换位置。   第二次外循环:找出第二大值8日要俩俩相比,比4次。因为上一步已经找到最大值了。   3 8 6 1 4 9第一次,8跟3比,8大,交换位置。   3 4 6 8 1 9第二次,8跟6比8大,交换位置。   3 6 1 8 4 9第三次,8跟1比8大,交换位置。   3 6 1 4 8 9第四次,8跟4比8大,交换位置。   第三次外循环:找出第三大的值,要俩俩相比,比三次。   3 6 1 4 8 9第一次,3跟6比6大,位置没有变化。   3 1 6 4 8 9第二次,6跟1比6大,交换位置。   3 1 4 6 8 9第三次,6跟4比6大,交换位置。   第四次外循环:找出第四大的值4,要俩俩相比,比2次。   1 3 4 6 8 9第一次,3跟1比3大,交换位置。   1 3 4 6 8 9第二次,3跟4比4大,位置不变。   第五次外循环:找出第五大的值3,比一次就够了。   1 3 4 6 8 9比一次。1跟3比3大,位置没有变化。

<强>总结:

1。外层循环要元素数- 1次。负责找出最大值。

2。内层循环逐层递减一次。负责俩俩相比较,交换元素位置。

<强>代码:

& lt; php ?   函数bubbleSort (arr)美元   {   $ len=count ($ arr);//获取元素个数   ($ i=0;美元我& lt;莱恩- 1美元;我+ +){//美元找出最大值   国旗=0;美元//做一个标记   ($ j=0;$ j & lt;莱恩- 1美元我;$ j + +){//俩俩相比较,交换位置   如果(arr [j]美元美元比;$ arr [$ j + 1]) {//temp=arr [j]美元;美元//存当前元素//arr [j]美元=arr美元($ j + 1);//把当前元素的值换成下一个元素的值//arr ($ j + 1)=美元临时;//把下一个元素的值换成上一个元素的值。   列表(arr [j]美元,美元arr [$ j + 1])=(arr j + 1美元,美元arr [j]美元];//来自lovecn的评论,有时候思维有些固化。   标志=1美元;//交换位置就记录。   }   }   如果美元标志==0){//没有发生交换位置,说明排序已经完成。可以推出循环。   打破;   }   }   返回由美元;   }

<>强快速排序原理(递归)

原理描述:

从数组中取第一个值作为参照物,比这个值小的放在左边,比这个值大的放在右边,这样就会有俩个新的数组,递归处理俩个数组,然后左边,参照物,右边合并。注意:有递归就要找到递归出口,不然就会一直递归下去。

流程:

用文字叙述流程太麻烦,就从网上找了一个图片,过程很清晰。

 PHP中排序算法原理是什么

代码:

& lt; PHP ?   快速排序函数(arr)美元   {   $ len=count ($ arr);//递归出口   如果(len & lt;美元=1){   返回由美元;   }   markValue=https://www.yisu.com/zixun/arr[0];美元//参照物。   美元左右=$=[];//定义左边和右边。   (i=1美元;我 markValue美元){//大于参照物的放在右边。   正确的[]=arr美元($ i);   其他}{//小于和等于参照物的元素都放进左边,这样会避免如果数组有重复元素时,会漏掉元素。   离开[]=arr美元($ i);   }   }   返回array_merge(快速排序(左)美元[markValue美元],快速排序(右)美元);   }

<>强插入排序

原理描述:

将要排序的数组分成俩个部分,取数组第一个元素放有序集合中,剩下的放到无序集合中。将需要排序的数,与前面已经排好序的数据从后往前进行比较,直到找到小于或者等于它的数,使其插入到相应的位置。

我的记忆方法:

假设有俩个箱子,第一个箱子是透明并且是空的,要用来装有序元素,第二个箱子是不透明并且是满的,装无序元素。(其实装什么都行,你喜欢的让你容易记住的最好).

PHP中排序算法原理是什么