近日,今日头条和快手事宜将“算法”拉进了大众的视野,一韶光“算法是否存在代价不雅观”的问题,成了各大媒体关注的焦点。作为程序员,抛开“算法是否存在代价不雅观”的辩论,我们可以从中看到“算法”的巨大力量。算法,虽然简大略单两个字,但就从技能层面而言,它却不是一个大略的问题。算法涉及很多内容,须要多个学科,如数学、社会心理学等的合营。
下面我们以PHP程序员最该当节制的几种排序算法为例,看看算法的详细实现。
1、冒泡排序法

描述:
在冒泡排序中,每一个要排序的数字都是一个泡,然后每个泡与泡之间进行比较,然后把最大的泡放在最右侧,直到排序结束,我们把这种排序就称之为“冒泡排序”。
实现:
2、选择排序
描述:
在要排序的一组数中,选出最小的一个数与第一个位置的数交流;然后在剩下的数当中再找最小的与第二个位置的数交流,如此循环到倒数第二个数和末了一个数比较为止。 选择排序是不稳定的。算法繁芜度O(n2)--[n的平方]。
实现:
3、插入排序
描述:
在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。直接插入排序是稳定的。算法韶光繁芜度O(n2)--[n的平方]。
实现:
4、快速排序
描述:
快速排序是对冒泡排序的一种实质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到精确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它旁边两边的数,直到基准点的旁边只有一个元素为止。
实现:
以上四种排序算法,虽然可以实现数据的排序,但在实际事情中是否利用它们,还是得视情形而定,由于在某些情形下,PHP内置的sort系列函数就可以实现数据排序。如:
sort():对数组排序。
uasort():利用用户自定义的比较函数对数组中的键值进行排序。
uksort():利用用户自定义的比较函数对数组中的键名进行排序。
usort():利用用户自定义的比较函数对数组进行排序。
arsort():春联系关系数组按照键值进行降序排序。
asort():春联系关系数组按照键值进行升序排序。
本文“系编码之道”原创,转载请注明出处。