插入排序php

时间:2018-04-19 08:47:44

标签: php sorting

让某人了解程序为什么不输入该功能? 这是一种简单的插入排序算法。

<?php
    function insert($my_array)
    {
        for($i=0;$i<count($my_array);$i++){
            $val = $my_array[$i];
            $j = $i-1;
            while($j>=0 && $my_array[$j] > $val){
                $my_array[$j+1] = $my_array[$j];
                $j--;
            }
            $my_array[$j+1] = $val;
        }
    return $my_array;
    $test_array = array(3, 0, 2, 5, -1, 4, 1);
    echo "Original Array :\n";
    echo implode(', ',$test_array );
    echo "\nSorted Array :\n";
    print_r(insert($test_array));
    ?>

3 个答案:

答案 0 :(得分:1)

现在不用尝试

}

   function insert($my_array)
    {
        for($i=0;$i<count($my_array);$i++){
            $val = $my_array[$i];
            $j = $i-1;
            while($j>=0 && $my_array[$j] > $val){
                $my_array[$j+1] = $my_array[$j];
                $j--;
            }
            $my_array[$j+1] = $val;
        }
    return $my_array;
}
    $test_array = array(3, 0, 2, 5, -1, 4, 1);
    echo "Original Array :\n";
    echo implode(', ',$test_array );
    echo "\nSorted Array :\n";
    print_r(insert($test_array));

OutPut :原始数组:3,0,2,5,-1,4,1个排序数组:Array ( [0] => -1 [1] => 0 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

答案 1 :(得分:0)

我从输入中读取文件的名称,我想对内容进行排序,但不打开文件。 这是代码:

function main(){
    global $argc, $argv;
    if($argc == 1){
        print("Please provide text file path");
        return;
    }
    print("START\n");
    run($argv[1]);
    print("END\n");
  }
  function run($file_name){
    $br = fopen($file_name,"r");
    $bw = fopen($file_name,"a");
    if($br && $bw){
        while(($line = fgets($br))!==false){
            if($line == "\n" || $line == "") break;
            $values = preg_split('/\s+/', $line);
            $res = array();
            for($i=0; $i< count($values)-1;$i++){
                $res[]=(int)$values[$i];
            }
            fwrite($bw,to_string(insert($res))."\n");
        }
    }
    fclose($br);
    fclose($bw);
  }

输出是: 开始 END

答案 2 :(得分:0)

$array = [3,44,38,5,47,15,36,26,27,2];
for($i = 1; $i < count($array); $i++){
    $low = $array[$i - 1];
    if($array[$i] < $low){
        $lastIndex = $i;
        $lastIndexVal = $array[$i];
        for($j = $lastIndex - 1;$j >= 0; $j--){
            if($j == 0 && $array[$j] > $lastIndexVal){
                $array[$lastIndex] = $array[$j];
                $array[$j] = $lastIndexVal;
            }else{
                if($array[$j] < $lastIndexVal){
                    $array[$lastIndex] = $lastIndexVal;
                }else{
                    $array[$lastIndex] = $array[$j];
                    $lastIndex = $j;
                }
            }
        }
    }
}
echo '<pre>';
print_r($array);
echo '</pre>';