Home  >  Article  >  Backend Development  >  Review and summary of PHP sorting algorithm_PHP tutorial

Review and summary of PHP sorting algorithm_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:20:59852browse

Just jump into the code!

Copy code The code is as follows:

/*
* Insertion sort (one-dimensional Array)
* Insert one data element to be sorted each time into the appropriate position in the previously sorted array, so that the array remains in order; until all data elements to be sorted are inserted.
*/
function insertSort($arr){
if(!is_array($arr) || count($arr)==0){
return $arr;
}
$count = count($arr);
for($i=1; $i<$count; $i++){
if(isset($arr[$i])){
$tmp = $arr[$i]; //Get the value of the next element
$j = $i - 1; //Get the previous subscript
while($arr[$j] > $ tmp){ //If the former one is larger than the latter one, here it is from small to large
  $arr[$j+1] = $arr[$j]; //Swap the small elements with the previous ones until Move to the appropriate position and move the next
  $arr[$j] = $tmp;
  $j--;
  }
}
}
return $arr;
}
 
/*
* Selection sort (one-dimensional array)
* Each pass selects the smallest (largest) element from the data elements to be sorted, and places them in order The end of the sorted array until all the data elements to be sorted have been sorted.
*/
function selectSort($arr){
if(!is_array($arr) || count($arr) == 0)
{
return $arr;
}
$count = count($arr);
for($i=0; $i<$count; $i++){
$k = $i;
for($j =$i+1; $j<$count; $j++){
if ($arr[$k] > $arr[$j])
$k = $j; //Find the minimum
if ($k != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[ $k] = $tmp;
  }
}
}
return $arr;
}
/* 
* Bubble sort (one-dimensional array)
* Compare the sizes of the data elements to be sorted pairwise, and if the order of the two data elements is found to be reversed, exchange them until there are no reversed data elements
*/
function bubbleSort($array){
$ count = count($array);
if ($count <= 0) {
return false;
}
for($i=0; $i<$count; $i++) {
for($j=$count-1; $j>$i; $j--){
  if ($array[$j] < $array[$j-1]){ / / Compare the found numbers and exchange
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
  }
}
}
return $array;
}
 
/*
* Quick sort (one-dimensional array)
*
*/
function quickSort($array){
if (count($array) <= 1){
return $array;
}
$key = $array [0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i if ($array[$i] <= $key){
 $left_arr[] = $array[$i];
 }else{
$right_arr[] = $array[$i] ;
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr, array($key), $right_arr );
}
/**
* Sort by the value of the elements
* strOrder is the order of sorting asc ascending desc descending
*/
function sortByVal($arr,$strOrder='asc')
{
if(!is_array($arr) || count($arr)==0)
{
return $arr;
}
$arrReturn = array();
foreach($arr as $key=>$val)
{
$arrKey[] = $key;
$arrVal[] = $val;
}
$count = count($arrVal);
if($count)
{
//Create a sequential array of keys
for($key=0;$key<$count;$key++)
{
$arrKeyMap[$key] = $key;
}
//Sort the values
for($i=0;$i<$count;$i++)
{
for($j = $count-1; $ j>$i;$j--)
{
//$bol = $strOrder == 'asc' ? $arrVal[$j]< ;$arrVal[$j-1] : $arrVal[$j]>$arrVal[$j-1];
if($bol){
$tmp = $arrVal[$j];
$arrVal[$j] = $arrVal[$j-1];
$arrVal[$j-1] = $tmp;
//Bubble sorting of values, causing interaction of key arrays
$keytmp = $arrKeyMap[$j];
$arrKeyMap[$j] = $arrKeyMap[$j-1];
$arrKeyMap[$j-1] = $keytmp;
}
}
}
if(count($arrKeyMap))
{
foreach ($arrKeyMap as $val)
{
$arrReturn[] = $arrKey[ $val];
}
}
return $arrReturn;
}
}
/**
* Use native functions to arrange arrays by value
*/
function arraySortByVal($arr,$keys, $type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v [$keys];
}
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
return $new_array;
}

For the following two methods of sorting array values, one is implemented by oneself and the other is using a native PHP function. In fact, sorting is still possible for a small amount of data, generally a single page of data. If Involving the sorting of a large amount of data, it is recommended to integrate it into the basic class of MYSQL.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/324976.htmlTechArticleJust go to the code! Copy the code as follows: ?php /* * Insertion sort (one-dimensional array) * Insert one data element to be sorted each time into the appropriate position in the previously sorted array...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn