コード例 #1
0
function insertSort(&$arr, $numb = 1)
{
    if ($numb < count($arr)) {
        for ($i = $numb - 1; $i >= 0; $i--) {
            if ($arr[$i] > $arr[$i + 1]) {
                $item = $arr[$i];
                $arr[$i] = $arr[$i + 1];
                $arr[$i + 1] = $item;
            }
        }
        insertSort($arr, $numb + 1);
    }
}
コード例 #2
0
 * 插入排序
 * @param $arr
 * @return array
 */
function insertSort($arr)
{
    $num = count($arr);
    if ($num <= 1) {
        return $arr;
    }
    for ($i = 1; $i < $num; $i++) {
        $x = $arr[$i];
        $j = $i - 1;
        while ($j >= 0 && $x < $arr[$j]) {
            $arr[$j + 1] = $arr[$j];
            $j--;
        }
        $arr[$j + 1] = $x;
    }
    return $arr;
}
// 测试代码
$arr = range(1, 10000);
shuffle($arr);
echo '<hr>';
$start = microtime(true);
$res = insertSort($arr);
echo number_format((microtime(true) - $start) * 1000);
echo '<pre>';
print_r($res);
exit;
コード例 #3
0
ファイル: Insert_sorting.php プロジェクト: denson7/phpstudy
<?php

//插入排序法
$arr = array(8, 63, 23, 4, 19, 2);
function insertSort(&$arr)
{
    //先默认下标为0这个数已经有序
    for ($i = 1; $i < count($arr); $i++) {
        //$insertVal是准备插入的数
        $insertVal = $arr[$i];
        //插入的数准备先和下标为$insertIndex比较
        $insertIndex = $i - 1;
        while ($insertIndex >= 0 && $insertVal < $arr[$insertIndex]) {
            //同时把数往后移一个位置
            $arr[$insertIndex + 1] = $arr[$insertIndex];
            $insertIndex--;
        }
        //插入(这是就给$insertVal找到适当位置)
        $arr[$insertIndex + 1] = $insertVal;
    }
}
insertSort($arr);
print_r($arr);
コード例 #4
0
ファイル: 2014_Array.php プロジェクト: 313801120/AspPhpCms
function testArrayData()
{
    $aData = '';
    $aData = array(3, 2, 4, 1, 6, 0);
    responseArray($aData, '原来顺序');
    responseArray(selectSort($aData), '选择排序');
    responseArray(quickSort($aData), '快速排序');
    responseArray(insertSort($aData), '插入排序');
    responseArray(bubbleSort($aData), '冒泡排序');
    responseArray(reQuickSort($aData), '反序排序');
    echo '<b>最 大 值:</b>' . $GLOBALS['PHPMax']($aData) . '<hr>';
    echo '<b>最 小 值:</b>' . $GLOBALS['PHPMin']($aData) . '<hr>';
}
コード例 #5
0
        array_push($randArr, $num);
    }
    return $randArr;
}
function insertSort($arr)
{
    for ($i = 0; $i < count($arr); $i++) {
        $temp = $arr[$i];
        $tempIndex = $i;
        for ($j = $i; $j > 0; $j--) {
            if ($temp < $arr[$j - 1]) {
                $arr[$j] = $arr[$j - 1];
                $tempIndex = $j - 1;
            }
        }
        $arr[$tempIndex] = $temp;
    }
    return $arr;
}
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return (double) $usec + (double) $sec;
}
$myArray = createArray();
$time_start = microtime_float();
$sortArr = insertSort($myArray);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Insert Sort in " . $time . "seconds";
var_dump($sortArr);
コード例 #6
0
ファイル: starght.php プロジェクト: Vince--/PHP-Sorting
 function shellSort(array $arr)
 {
     $k = initStep(count($arr));
     $step = pow(2, $k) - 1;
     #根据步长进行多次插入排序,依次减少步长,
     for (; $step >= 1; $step = pow(2, --$k) - 1) {
         $arr = insertSort($arr, $step);
     }
     return $arr;
 }
コード例 #7
0
ファイル: insert.php プロジェクト: YuraMalahov/algorithms
<?php

$list = [5, 4, 1, 7, 9, 2, 0, 3, 6, 8];
function insertSort(&$list)
{
    $length = count($list);
    for ($i = 0; $i < $length; $i++) {
        $current = $i;
        $next = $i + 1;
        while (array_key_exists($next, $list) && $list[$next] < $list[$current]) {
            $tmp = $list[$next];
            $list[$next] = $list[$current];
            $list[$current] = $tmp;
            $current--;
            $next--;
        }
    }
}
insertSort($list);