Associative Quick Sort


/ Published in: PHP
Save to your folder(s)



Copy this code and paste it in your HTML
  1. // convert associative array to 2d array
  2. function arr_convert_2d($arr) {
  3. $tmp_arr = array();
  4. foreach ($arr as $k => $v) {
  5. $tmp_arr[] = array('index' => $k, 'value' => $v);
  6. }
  7.  
  8. return $tmp_arr;
  9. }
  10.  
  11. // convert 2d associative array to 1d array
  12. function arr_convert_1d($arr) {
  13. $tmp_arr = array();
  14. foreach ($arr as $v) {
  15. $tmp_arr[$v['index']] = $v['value'];
  16. }
  17.  
  18. return $tmp_arr;
  19. }
  20.  
  21. function assoc_quicksort($arr)
  22. {
  23. if (!count($arr)) return $arr;
  24.  
  25. $pivot = $arr[0];
  26. $left = $right = array();
  27.  
  28. for($i = 1; $i < count($arr); $i++) {
  29. if($arr[$i]['value'] <= $pivot['value']) {
  30. $left[] = $arr[$i];
  31. }
  32. else {
  33. $right[] = $arr[$i];
  34. }
  35. }
  36.  
  37. return array_merge(assoc_quicksort($left), array($pivot), assoc_quicksort($right));
  38. }
  39.  
  40. $qsort_assoc_arr = arr_convert_1d(assoc_quicksort(arr_convert_2d($changed_arr)));

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.