美文网首页PHP经验分享
快排、冒泡、选择、插入排序PHP实现

快排、冒泡、选择、插入排序PHP实现

作者: spurYin | 来源:发表于2017-05-03 23:15 被阅读0次
<?php 
/**
*快速排序
**/
function quickSort(&$arr,$left,$right)
{
    $start=$left;
    $end=$right;
    while($start<$end){
        while($arr[$start]<$arr[$left] && $start!=$end){
            $start++;
        }
        while($arr[$end]>$arr[$left] && $start!=$end){
            $end--;
        }
        $tmp=$arr[$start];
        $arr[$start]=$arr[$end];
        $arr[$end]=$tmp;
    }
    if($arr[$start]>$arr[$left]){
        $start--;
    }
    $tmp=$arr[$start];
    $arr[$start]=$arr[$left];
    $arr[$left]=$tmp;
    if($start-1>$left){
        quickSort($arr,$left,$start-1);
    }
    if($start+1<$right){
        quickSort($arr,$start+1,$right);
    }
}
/**
*快速排序1
**/
function quickSort1(&$arr,$left,$right)
{
    $i=$left;
    $j=$right;
    $flag=$arr[$left];
    while($i<$j)
    {
        while($arr[$j]>=$flag && $i<$j)
        {
            $j--;
        }
        if($i<$j)
        {
            $arr[$i++]=$arr[$j];
        }
        while($arr[$i]<$flag && $i<$j)
        {
            $i++;
        }
        if($i<$j)
        {
            $arr[$j--]=$arr[$i];
        }
    }
    $arr[$i]=$flag;
    if($i>$left){
        quickSort1($arr,$left,$i-1);
    }
    if($i<$right){
        quickSort1($arr,$i+1,$right);
    }
}
/**
*冒泡排序
*/
function BubbleSort(&$arr)
{
    $length=count($arr);
    for($i=0;$i<$length;$i++){
        for($j=0;$j<$length-$i-1;$j++){
            if($arr[$j+1]<$arr[$j]){
                $tmp=$arr[$j];
                $arr[$j]=$arr[$j+1];
                $arr[$j+1]=$tmp;
            }
        }
    }
}
/**
*选择排序
*/
function SelectSort(&$arr){
    $length=count($arr);
    for($i=0;$i<$length;$i++){
        $now=$i;
        $min=$arr[$i];      
        for($j=$i+1;$j<$length;$j++){
            if($arr[$j]<$min){
                $min=$arr[$j];
                $now=$j;
            }
        }
        $tmp=$arr[$i];
        $arr[$i]=$min;
        $arr[$now]=$tmp;
    }
}
/**
*插入排序
**/
function InsertSort(&$arr){
    $length=count($arr);
    for($i=1;$i<$length;$i++){
        $now=$arr[$i];
        if($now<$arr[$i-1]){            
            for($j=$i-1;$j>=0 && $arr[$j]>$now;$j--){
                $arr[$j+1]=$arr[$j];
            }
            $arr[$j+1]=$now;
        }
    }
}
//测试排序结果
for($i=0;$i<20;$i++){
    $arr[]=$i;
}
shuffle($arr);
print_r($arr);
//quickSort($arr,0,count($arr)-1);
InsertSort($arr);
print_r($arr);

相关文章

  • JavaScript实现排序算法

    实现了冒泡,选择,插入,快排,希尔,归并 冒泡排序 选择排序 插入排序 快速排序 希尔排序 归并排序

  • OC中的排序算法

    目录 冒泡排序、快速排序、选择排序、插入排序 冒泡 快排 选择 插入

  • PHP算法系列教程(一)-四大排序算法

    PHP算法系列教程(一)-四大排序算法 冒泡 冒泡排序原理图 选择 选择排序原理图 插入 插入排序原理图 快排 快...

  • 快排、冒泡、选择、插入排序PHP实现

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • 几种排序算法

    1、直接插入排序 2、冒泡排序 3、选择排序 4、快排

  • 排序

    O(n^2)排序的稳定性:冒泡、插入排序可以实现成稳定的选择排序做不到稳定 O(nlogn)归并排序可以快排、堆排...

  • 7种排序代码总结

    冒泡排序 选择排序 插入排序 希尔排序 归并排序 三路快排 堆排序

  • swift排序

    1、冒泡排序 2、选择排序 3、插入排序 4、希尔排序 5、快排 6、归并排序

  • 排序

    1.冒泡排序,2.选择排序,3.快速排序,4.插入排序 几种常见的排序方式,速度是快排 >插入> 冒泡> 选择例子...

网友评论

    本文标题:快排、冒泡、选择、插入排序PHP实现

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