PHP实现简单插入排序

好多年前用C写过,觉得挺简单的,但是今天用PHP重写了一下,写了两个小时, 哈哈,有点丢人。    我是每次有新元素,先占了一个位置。然后如果发现这个位置没动,就插到最左边。下边看代码吧。

 public function handle()
    {

            $arr = array(2,11,23,5,888,111,22,34,56,134,22);
            echo '排序前数据 '.implode(' ',$arr)."\n";
            $res =insertSort( $arr );
            echo '排序后数据 '.implode(' ',$res);


    }

   
  function insertSort($arr)
    {

        if(empty($arr)) return [];
        $resArr[0] = $arr[0];
        $count = count($arr);
        for($i = 1;$i < $count; $i++){
            //先给最新元素一个位置。
            $resArr[] = '';
            $resCount = count($resArr);
            //拿上原数组的值去比较
            for($j = $resCount -2 ; $j >= 0;$j--){
                if($arr[$i] > $resArr[$j]){
                       for($t =$resCount-1;$t > $j+1;$t--) {
                           $resArr[$t] = $resArr[$t - 1];
                       }
                       $resArr[$j + 1] = $arr[$i];
                   break;
                }

            }

            //如果最后一个值是空串,说明这个值,在最左边。全部移动呀。然后把值放进去
            if ($resArr[($resCount - 1)] == '') {
                for ($t = $resCount - 1; $t > 0; $t--) {
                    $resArr[$t] = $resArr[$t - 1];
                }
                $resArr[0] = $arr[$i];
            }
        }
     return $resArr;
    }

猜你喜欢

转载自blog.csdn.net/wuye_lh/article/details/105835358
今日推荐