php实现排序算法第(二)篇 插入排序 选择排序

插入排序

原理:插入排序的原理是从未排序的序列中拿出一个元素,然后依次从后向前一个个与已经排好序的序列比较,当待排序的元素比较起来更小的时候,两个元素直接交换位置。依次执行上述步骤直到找到比他更小的元素。 注意事项:当要插入的元素比已经排好序的元素都小的时候会出现问题。因为他没法自动停止while循环,会导致$j变成-1从而使程序错误。

<?php
    function insertSort ($arr) {
        $count = count($arr);
        if ($count <= 1){
            return $arr;
        }
        for ($i = 1; $i < $count; $i++) {
            $tmp = $arr[$i];
            $j = $i;
            while($arr[$j-1] > $tmp){
                $arr[$j] = $arr[$j-1];
                $arr[$j-1] = $tmp;
                $j--;
                if($j == 0) break;
            }

        }
        return $arr;
    }

    $arr = array(34,45,3,6,34,4,56,67,43,34,5,35,355,34,3);
    print_r(insertSort($arr));

选择排序

原理 每次从待排序的序列中取出最小的元素的元素放入已经排序的序列之中

<?php
    function selectSort($arr){
        $count = count($arr);
        if($count <= 1){
            return $arr;
        }
        for($i = 0; $i < $count; $i++){
            for($j = $i + 1;$j < $count;$j++){
                if($arr[$i] > $arr[$j]){
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$i];
                    $arr[$i] = $tmp;
                }
            }
        }
        return $arr;
    }
    $arr = array(23,45,56,67,78,4,46,35,1,567,2,56,6);
    print_r(selectSort($arr));
点赞