Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. <?php
  2. //merge sort example
  3.  
  4. function merge_sort($unsortedArray){
  5.  
  6. $arrayCount = count($unsortedArray);
  7.  
  8. //check if one element (passed by merge function or main function)
  9. if($arrayCount === 1){
  10. //already sorted
  11. return $unsortedArray;
  12. }
  13.  
  14. //middle element
  15. $middle = (int)floor($arrayCount / 2) ;
  16.  
  17. $arrayChunk = array_chunk($unsortedArray,$middle);
  18.  
  19. //first half
  20. $firstHalf = $arrayChunk[0];
  21.  
  22. //second half (combine two chunks if odd number of element is present)
  23. if($arrayCount % 2 == 1){
  24. $secondHalf = array_merge($arrayChunk[1],$arrayChunk[2]);
  25. }else{
  26. $secondHalf = $arrayChunk[1];
  27. }
  28.  
  29. return merge(merge_sort($firstHalf),merge_sort($secondHalf));
  30. }
  31.  
  32.  
  33. function merge($firstHalf,$secondHalf){
  34.  
  35. $resultArray = [];
  36. $firstHalfIndex = 0;
  37. $secondHalfIndex = 0;
  38.  
  39.  
  40. while ($firstHalfIndex < count($firstHalf) && $secondHalfIndex < count($secondHalf)) {
  41. // var_dump($firstHalf[$firstHalfIndex] < $secondHalf[$secondHalfIndex]);
  42. if ($firstHalf[$firstHalfIndex] < $secondHalf[$secondHalfIndex]) {
  43. array_push($resultArray,$firstHalf[$firstHalfIndex]);
  44. $firstHalfIndex++;
  45. } else {
  46. array_push($resultArray,$secondHalf[$secondHalfIndex]);
  47. $secondHalfIndex++;
  48. }
  49.  
  50. }
  51.  
  52. // var_dump($resultArray,array_slice($firstHalf,$firstHalfIndex),array_slice($resultArray,$secondHalfIndex));
  53. // die();
  54. if(!empty(array_slice($firstHalf,$firstHalfIndex))){
  55. $resultArray = array_merge($resultArray,array_slice($firstHalf,$firstHalfIndex));
  56. }
  57.  
  58. // var_dump($resultArray);
  59. // die();
  60.  
  61. if(!empty(array_slice($resultArray,$secondHalfIndex))){
  62. $resultArray = array_merge($resultArray,array_slice($secondHalf,$secondHalfIndex));
  63. };
  64.  
  65. return $resultArray;
  66. }
  67.  
  68.  
  69. //unsorted array
  70. $unsortedArray = [200,100,50,5000,2,3000,343,4323,121,23232323,200];
  71. var_dump($unsortedArray);
  72.  
  73. $sortedArray = merge_sort($unsortedArray);
  74.  
  75. var_dump($sortedArray)
  76. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement