HerbCollins / phpsort

php常用排序算法整理

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

phpsort

php常用排序算法整理

包括了冒泡排序、选择排序、插入排序、快速排序这四种基本排序

冒泡排序

  • 原理

冒泡排序是对一组数据相邻之间比较大小,比较之后要把谁放前谁放后就要看你是想升序排列还是降序排列了。整个过程是两组循环。 比如一组数据 ( 6, 6, 3, 1, 8, 7, 2, 4 ),按升序排列 第1次比较: 6 , 6 , 3 , 1 , 8 , 7 , 2 , 4 第2次比较: 6 , 3 , 6 , 1 , 8 , 7 , 2 , 4 第3次比较: 6 , 3 , 1 ,6, 8 , 7 , 2 , 4 第4次比较: 6 , 3 , 1 ,6, 8 , 7 , 2 , 4 第5次比较: 6 , 3 , 1 ,6, 7 , 8 , 2 , 4 第6次比较: 6 , 3 , 1 ,6, 7 , 2 , 8 , 4 第7次比较: 6 , 3 , 1 ,6, 7 , 2 , 4 , 8 以上是第一轮比较,还要继续进行,接下来的比较和上面的比较过程一样,就不再累述。

选择排序

  • 原理

“Selection Sort”通常被翻译成“选择排序”,Selection在英文中还有一个“被选中者”的意思。选择排序就是把一组数据中的第一个当做整个数组(n个数据)中的最小值,然后拿这个最小值去和剩余的数据依次比较,去剩余数据中真正的最小值,如果找到了就将这两个数据进行位置替换,这样就将整个数组中的最小值放到了第一位,当然如果没有找到,那第一个数据真的是最小值,那就不用替换。然后重新从第二个数据开始,将第二个数据当做是剩余n-1个数据中最小的,同样的进行比较、替换等步骤,直到进行到最后一位(如果是倒序排序,同理)。这样你就明白我为什么要先说一下“Selection”还有一个“被选中者”的意思了。

插入排序

  • 原理

插入排序单从字面上是不好理解的,拿数组( 6, 5, 3, 1, 8, 7, 2, 4 )升序排序来举例,它其实是从第二位(5)开始为标记点,将第二位与它左边的第一个(6)进行比较,如果(6)比(5)大,这两个就进行交换,这样就变成了( 5 ,6 , 3, 1, 8, 7, 2, 4 ),然后左边第一个(5)再与左边第二个比较(没有就继续下一轮),下一轮中,以第三位(3)为标记点,将(6)与(3)进行比较,交换,(3)与(5)比较,交换,然后再接着进行下一轮...依次类推

快速排序

  • 原理

快排的过程就是拿数组中的第一个数作为切割点,遍历数组剩余的数据,依次与该切割点进行比较,比它小的另存一个数组中,比它大的也另存一个数组中,和它相等的同样放进另一个数组中,这样就用一个点切割出三个数组,分别是比它小的(后面称这个数组为左边数组)、比它大的(后面称这个数组为右边数组)还有和它相等的数组(后面称它为等同数组),然后将左边数组和比右边数组分别用这个方法递归切割,左边数组递归切割完成之后,将左边数组和等同数组合并(左边数组在前),然后再与右边数组递归切割好的进行合并,就是整个快排了。

About

php常用排序算法整理


Languages

Language:PHP 100.0%