PHP实现常用排序算法

先贴一张分析常见算法时间复杂度和稳定性的图 

PHP实现常用排序算法

 

 

 

 

 

 

很多phper都不会算法,一般的web开发也用不上,但我为什么要学习呢....就是为了遇到不会算法的程序员可以吊打他们!低调~~~

PHP实现常用排序算法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PHP实现常用排序算法

 

 

 

1.冒泡排序法

冒泡排序就是把小的元素往前调(或者把大的元素往后调)。注意是相邻的两个元素进行比较,而且是否需要交换也发生在这两个元素之间。

所以,如果两个元素相等,我想你是不会再无聊地把它们俩再交换一下。

如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个元素相邻起来,最终也不会交换它俩的位置,所以相同元素经过排序后顺序并没有改变。

所以冒泡排序是一种稳定排序算法。 

PHP实现常用排序算法

 

 

 

 

 

 

 

 

 

 

 

 

 

2.选择排序法

选择排序即是给每个位置选择待排序元素中当前最小的元素。比如给第一个位置选择最小的,在剩余元素里面给第二个位置选择次小的,

依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。

那么,在一趟选择时,如果当前锁定元素比后面一个元素大,而后面较小的那个元素又出现在一个与当前锁定元素相等的元素后面,那么交换后位置顺序显然改变了。

呵呵!比较拗口,举个例子:序列5 8 5 2 9, 我们知道第一趟选择第1个元素5会与2进行交换,那么原序列中两个5的相对先后顺序也就被破坏了。

所以选择排序不是一个稳定的排序算法。

 

PHP实现常用排序算法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/CoolGuy/blog/843729