• 四种简单的排序算法的php实现


      无聊,用php写几个排序算法,算法介绍请移步这里,这里使用php实现了几个简单的,如下

    //选择排序
    function selection_sort($arr){
        $len = count($arr);
        if($len <= 1) return $arr;
        
        for($i=0; $i<$len; $i++){
            $min = $arr[$i];
            $pos = $i;
            for($j=$i+1; $j<$len; $j++){
                if($min > $arr[$j]){
                    $min = $arr[$j];
                    $pos = $j;
                }
            }
            if($pos != $i){
                $arr[$pos] = $arr[$i];
                $arr[$i] = $min;
            }
        }
        return $arr;
    }
    
    //插入排序
    function insertion_sort($arr){
        $len = count($arr);
        if($len <= 1) return $arr;
        
        for($i=1; $i<$len; $i++){
            $insertion = $arr[$i];
            $j = $i - 1;
            while($insertion < $arr[$j]){
                $arr[$j+1] = $arr[$j];
                $j--;
                if($j < 0)break;
            }
            if($j == $i-1) continue;
            $arr[$j+1] = $insertion;
        }
        return $arr;
    }
    
    //冒泡排序
    function bubble_sort($arr){
        $len = count($arr);
        if($len <= 1) return $arr;
        
        for($i=0; $i<$len; $i++){
            for($j=$len-1; $j>$i;  $j--){
                if($arr[$j] < $arr[$j-1]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j-1];
                    $arr[$j-1] = $tmp;
                }
            }
        }
        return $arr;
    }
    
    //快速排序
    function quick_sort($arr){
        $len = count($arr);
        if($len <= 1) return $arr;
        
        $base = current($arr);
        $left_arr = array();
        $right_arr = array();
        
        for($i=1; $i<$len; $i++){
            if($arr[$i] <= $base) $left_arr[] = $arr[$i];    
            if($arr[$i] > $base) $right_arr[] = $arr[$i];    
        }
        
        $left_arr = quick_sort($left_arr);
        $right_arr = quick_sort($right_arr);
        return array_merge($left_arr, array($base), $right_arr);
        
    }
    
    //test
    $arr = array(4, 3, 2, 1, 6);
    $arr_sorted = quick_sort($arr);
    print_r($arr_sorted);
  • 相关阅读:
    div3--C. Pipes
    Problem F Free Weights
    H
    Problem C Careful Ascent
    Problem L. World Cup
    Problem E. Bet
    Problem D. Ice Cream Tower
    A. Number Theory Problem
    A
    软考知识点梳理--项目评估
  • 原文地址:https://www.cnblogs.com/kekukele/p/4787633.html
Copyright © 2020-2023  润新知