PHP实现四种基本排序算法,php四种算法
许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。
前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。
$arr(1,43,54,62,21,66,32,78,36,76,39);
1. 冒泡排序
思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
代码实现:
Java代码
- $arr=array(1,43,54,62,21,66,32,78,36,76,39);
- function bubbleSort($arr)
- {
- $len=count($arr);
- for($i=1;$i
- {
- for($k=0;$k
- {
- if($arr[$k]>$arr[$k+1])
- {
- $tmp=$arr[$k+1];
- $arr[$k+1]=$arr[$k];
- $arr[$k]=$tmp;
- }
- }
- }
- return $arr;
- }
2.选择排序
思路分析:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
代码实现:
Java代码
- function selectSort($arr) {
- $len=count($arr);
- for($i=0; $i1; $i++) {
- $p = $i;
-
- for($j=$i+1; $j
- if($arr[$p] > $arr[$j]) {
- $p = $j;
- }
- }
- if($p != $i) {
- $tmp = $arr[$p];
- $arr[$p] = $arr[$i];
- $arr[$i] = $tmp;
- }
- }
- return $arr;
- }
3.插入排序
思路分析:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
代码实现:
Java代码
- function insertSort($arr) {
- $len=count($arr);
- for($i=1, $i
- $tmp = $arr[$i];
- for($j=$i-1;$j>=0;$j--) {
- if($tmp
- $arr[$j+1] = $arr[$j];
- $arr[$j] = $tmp;
- } else {
- break;
- }
- }
- }
- return $arr;
- }
4.快速排序
思路分析:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。
代码实现:
Java代码
- function quickSort($arr) {
- $length = count($arr);
- if($length 1) {
- return $arr;
- }
- $base_num = $arr[0];
- $left_array = array();
- $right_array = array();
- for($i=1; $i
- if($base_num > $arr[$i]) {
- $left_array[] = $arr[$i];
- } else {
- $right_array[] = $arr[$i];
- }
- }
- $left_array = quick_sort($left_array);
- $right_array = quick_sort($right_array);
- return array_merge($left_array, array($base_num), $right_array);
- }
-
http://www.bkjia.com/PHPjc/973828.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/973828.htmlTechArticlePHP实现四种基本排序算法,php四种算法 许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到...
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn