3
<?php
function sortArray() {
    $inputArray = array(8, 2, 7, 4, 5);
    $outArray = array();
    for($x=1; $x<=100; $x++) {
        if (in_array($x, $inputArray)) {
            array_push($outArray, $x);
        }
    }
    return $outArray;
}


$sortArray = sortArray();
foreach ($sortArray as $value) {
    echo $value . "<br />";
}
?>

私はこのコードを持っていますが、2つの問題があります

  • 配列内の数値が 100 より大きい場合はどうなりますか?
  • また、並べ替えの方法を複数見てみたい
4

21 に答える 21

28

仕分け方法はこちら。

<?php

$array=array('2','4','8','5','1','7','6','9','10','3');

echo "Unsorted array is: ";
echo "<br />";
print_r($array);


for($j = 0; $j < count($array); $j ++) {
    for($i = 0; $i < count($array)-1; $i ++){

        if($array[$i] > $array[$i+1]) {
            $temp = $array[$i+1];
            $array[$i+1]=$array[$i];
            $array[$i]=$temp;
        }       
    }
}

echo "Sorted Array is: ";
echo "<br />";
print_r($array);

?>
于 2013-03-07T19:23:13.517 に答える
2
    $arr= array(110,20,130,100,2);

    for($i=0; $i<count($arr)-1; $i++)
    {
        for($j=0; $j<count($arr)-1; $j++)
        {
            if($arr[$j]> $arr[$j+1]){
                $temp= $arr[$j+1];
                $arr[$j+1]= $arr[$j];
                $arr[$j]= $temp;
            }
        }

    }
    print_r($arr);
于 2015-09-13T13:09:23.903 に答える
0

このプログラムを参照できます。

<?php

//using sorting functions
$arr = array(1,13,2,9,5,7,0,3);

echo("Before sorting");
echo "<pre>";
print_r($arr);
echo "</pre>";

for ($i=0; $i < count($arr)-1; $i++) {
	sortarray($arr);
}

function sortarray(&$arr) {
    for ($i=0; $i < count($arr)-1; $i++) {
        if ($arr[$i+1] < $arr[$i]) {
            $tmp = $arr[$i+1];
            $arr[$i+1] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
}

echo("Sorted array");
echo "<pre>";
print_r($arr);
echo "</pre>";
?>

于 2016-06-18T15:13:28.707 に答える
0

PHPでの正しい解決策は次のとおりです。

$array=array('2','4','8','5','1','7');

for($i=1;$i< count($array);$i++)
{
   for($j=$i;$j>0;$j--)
   {    
       if($array[$j] < $array[$j-1])
       { 
           $tmp = $array[$j];
           $array[$j] = $array[$j-1];
           $array[$j-1] = $tmp ;
       }
   }
}
于 2015-08-28T16:01:29.373 に答える
0

ソートにはバブルソートを使用できます。

O(n) の最高のパフォーマンス。それ以外の場合、最良のケース == 最悪のケース == 平均的なケース == O(n^2)

$Obj1 = array(20, 30, 10, 50, 40, 60, 100, 90, 80, 70);

 $temp;

print_r($Obj1);


for ($i = 0; $i < sizeof($Obj1) - 1; $i++) {

for ($j = sizeof($Obj1) - 1; $j > $i; $j--) {
    if ($Obj1[$j - 1] > $Obj1[$j]) {
        $temp = $Obj1[$j-1];
        $Obj1[$j-1] = $Obj1[$j];
        $Obj1[$j] = $temp;
        $temp = 0;
    }
}

}

print_r($Obj1);
于 2015-11-06T06:19:36.523 に答える
0
    **Using Bubbole Sort:**
<?php
        $arr =array(12,10,190,90,890);
        echo "Before Sorting Array";echo '</br>';
        print_r($arr);echo '</br>';
        echo 'After Sorting Arry:'.'</br>';
        for ($i = 0; $i < sizeof($arr); $i++) {
            for ($j = $i + 1; $j < sizeof($arr); $j++) {
                $tmp = 0;
                if ($arr[$i] > $arr[$j]) {
                    $tmp = $arr[$i];
                    $arr[$i] = $arr[$j];
                    $arr[$j] = $tmp;
                }
            }
            echo $arr[$i];echo '</br>';
        }
    ?>
于 2016-08-25T07:52:33.913 に答える
0

これが最も簡単な並べ替え方法です...

function sort($arr) {
  for ($i=0; $i<count($arr); $i++) {
    for ($j=0; $j<count($arr)-1-$i; $j++) {
        if ($arr[$j+1] < $arr[$j]) {
            swap($arr, $j, $j+1);
        }
     }
  }
  return $arr;
}

function swap(&$arr, $a, $b) {
   $tmp = $arr[$a];
   $arr[$a] = $arr[$b];
   $arr[$b] = $tmp;
}

//using sorting functions
$arr = array(1,13,2,9,5,7,0,3);

 echo("Before sorting");
 print_r($arr);

 sort($arr);

 echo("Sorted array");
 print_r($arr);
于 2012-09-13T15:00:39.477 に答える
0

これをチェックしてください、これはより効率的です

$array=array('2','4','8','5','1','7','6','9','10','3');


for($i=1;$i< count($array);$i++)
{
   for($j=$i;$j>0;$j--)
   {    
       if($array[$j] < $array[$j-1])
       { 
           $tmp = $array[$j];
           $array[$j] = $array[$j-1];
           $array[$j-1] = $tmp ;
       }
   }
}

echo "<pre>";
print_r($array);
于 2015-02-13T03:40:30.630 に答える
0
<?php
$array  = array(1,4,10,5,8,3,6,61,0);

for($x=0;$x<=count($array)-1;$x++){

    for($z=0;$z<=count($array)-1;$z++){

    if($array[$x]<$array[$z])
    {
        $temp = $array[$x];
        $array[$x] = $array[$z];
        $array[$z] = $temp;
    }

    }   
}

print_r($array);
于 2018-04-03T12:01:21.493 に答える
0
//Best solution for bubble sort
$a = [10,5,2,8,7];
$k = 0;//I used this variable because i want to show you how many times my for loop needs to iterate maximum.
for($i = 0;$i < count($a); $i++){
    for($j = 1; $j < count($a) - $i; $j++){
        if($a[$j -1 ] > $a[$j]){
            $temp = $a[$j];
            $a[$j] = $a[$j -1];
            $a[$j - 1] = $temp;
        }
        $k++;
    }

}
echo $k;
echo '<pre>';
print_r($a);
echo '</pre>';
于 2018-09-21T21:02:33.563 に答える