сортировка значения массива без использования встроенных php, таких как sort () и т. д.

<?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 />"; } ?> 

У меня есть этот код, но есть две проблемы

  • Что делать, если мои числа в массиве больше 100?
  • Кроме того, я хотел бы увидеть несколько методов сортировки

Related of "сортировка значения массива без использования встроенных php, таких как sort () и т. д."

Вот способ сортировки.

 <?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); ?> 
  $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); 

Вот простейший способ сортировки …

 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); 

Проверьте это, это более эффективно

 $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); 

Мы можем использовать сортировку Bubble для сортировки.

Наилучшая производительность 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); 
  **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>'; } ?> 

Вот правильное решение в 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 ; } } } 

Вы можете обратиться к этой программе.

 <?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>"; ?> 

Проверьте это, базовая логика для начинающих step by step

 <?php $array = array('5','15','7','12','39','1','5'); echo "Before Sort "; echo "<pre>"; print_r($array); echo "<BR/>After Sort "; for($prnt_index=0; $prnt_index < count($array); $prnt_index++){ // echo $array[$prnt_index].", "; for($child_index=0; $child_index < count($array)-1 ; $child_index++){ if($array[$child_index] > $array[$child_index+1] ){ // 9, 7 //apply swapping concept $temp_var= $array[$child_index+1]; //put 7 in some temp var // swap current index with next index $array[$child_index+1] =$array[$child_index]; // get temp data and put on current index $array[$child_index] =$temp_var; } } } print_r($array); echo "</pre>"; ?> 

Вывод введите описание изображения здесь

 <?php $array = array(5,3,1,6,7,4,8,2); for($i=0; $i < count($array); $i++) { for($j=0; $j < $i; $j++) { if($array[$i] < $array[$j]) { $temp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $temp; } } } print_r($array); ?> 
 $array = array('1','2','4','3','8','7','10','11'); $c = count($array); for($i=0;$i<$c;$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 /><pre>"; print_r($array);