美文网首页
php排序法

php排序法

作者: zhanglizzy | 来源:发表于2017-03-23 20:45 被阅读15次

常用排序方法:
(1)冒泡法:
基本思想:


冒泡法.png
<?php 
   
   //简单冒泡法
   $arr = array(0,5,-1);
   $temp=0;//这是一个中间变量
   //从小到大
   //外层循环
   for ($i=0; $i < count($arr)-1; $i++) { 
       for ($j=0; $j < count($arr)-1-$i; $j++) { 
           
           if ($arr[$j]>$arr[$j+1]) {//说明前面的数比后面的数大
               $temp=$arr[$j];
               $arr[$j]=$arr[$j+1];
               $arr[$j+1]=$temp;
           }
       }
   }
   print_r($arr);
?>

(2)选择排序法;


选择排序法.png
function selectSort(&$arr) {

    $temp = 0;
    for ($i=0; $i < count($arr)-1; $i++) { 
        //假设$i是最小的数
        $minVal = $arr[$i];
        //记录我们认为的最小数的下标
        $minIndex = $i;
        for($j=$i+1; $j<count($arr);$j++) {
            if ($minVal > $arr[$j]) {//说明认为的最小值,不是最小值
                $minVal = $arr[$j];
                $minIndex = $j;
            }
        }
        //最后交换
        $temp = $arr[$i];
        $arr[$i] = $arr[$minIndex];
        $arr[$minIndex] = $temp;
    }
}

selectSort($arr);
print_r($arr);

(3)插入排序法;
在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

function insertSort($arr) {
    $len=count($arr); 
    for($i=1, $i<$len; $i++) {
        $tmp = $arr[$i];
        //内层循环控制,比较并插入
        for($j=$i-1;$j>=0;$j--) {
            if($tmp < $arr[$j]) {
                //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } else {
                //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。
                break;
            }
        }
    }
    return $arr;
}

(4)快速排序法。
选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

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<$length; $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);
}

相关文章

  • PHP 冒泡排序法

    PHP 冒泡排序法

  • 排序法【PHP】

    1. 插入排序法 2. 归并排序法 3. 快速排序 4. 堆排序

  • php排序法

    常用排序方法:(1)冒泡法:基本思想: (2)选择排序法; (3)插入排序法;在要排序的一组数中,假设前面的数已经...

  • 排序算法

    排序算法分类 排序算法常用主要有:冒泡排序法、快速排序法、选择排序法、插入排序法、堆排序法、归并排序法等几种。 ...

  • 各种排序方法

    冒泡排序法 选择排序法 链表排序法 qsort()函数排序法

  • 排序算法总结

    选择排序法 插入排序法 冒泡排序法 归并排序法 自顶向下 自底向上 快速排序法 单路快速排序法 双路快速排序法 三...

  • 排序算法

    冒泡排序 PHP OC 快速排序

  • php实现几种常见的排序方法

    1. 冒泡排序法: 2. 选择排序法: 3.插入排序法: 4.快速排序法:

  • 浅析三种排序和我写的一种排序

    要说起对数组进行排序,php很擅长,php有非常多的数组函数,其中就包括了排序。冒泡排序,选择排序,插入排序,今天...

  • 常用的排序算法

    1. 冒泡排序: 2.快速排序法 3.插入排序法 4.选择排序法 5.归并排序法

网友评论

      本文标题:php排序法

      本文链接:https://www.haomeiwen.com/subject/dtvtottx.html