php 数组排序方法分享(冒泡排序、选择排序)

原创
2016-07-25 09:04:04 942浏览
  1. function maoPao($arr,$style)//默认传递的是值,不是地址。如果在$arr前加个&,则和$arr1指向同一个地址,函数外的$arr1也被排好了
  2. {
  3. $temp=0;
  4. $flag=false;
  5. for($i=0;$i{
  6. for($j=0;$j{
  7. if($style=='bts') $op=$arr[$j]else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
  8. if($op)
  9. {
  10. $temp=$arr[$j];
  11. $arr[$j]=$arr[$j+1];
  12. $arr[$j+1]=$temp;
  13. $flag=true;
  14. }
  15. }
  16. if($flag==false)
  17. {
  18. break;//当一次横向循环下来flag==false;说明纵向循环里每次相邻元素比较大小时if条件均不满足,即从小到大已排好,无需再横向循环
  19. }
  20. }
  21. foreach ($arr as $key => $value)
  22. {
  23. echo $value.',';
  24. }
  25. }
  26. $arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
  27. maoPao($arr1,'stb');//small to big
  28. ?>
复制代码

有关冒泡排序的例子,大家还可以参考如下的文章: php冒泡排序之交换排序法 又一个php冒泡排序(bubble sort)的例子 php实现冒泡排序算法的代码 php冒泡排序算法一例 php冒泡排序与快速排序的例子 2、选择排序: 第二个数至第n个数分别与第一个数比较,进行交换,第三个数至第n个数分别与第二个数比较,进行交换,直到排序完成。

  1. /**

  2. *
  3. *
  4. *
  5. */
  6. function selectSort($arr,$style)
  7. {
  8. $temp=0;
  9. $flag=false;
  10. for($i=0;$i{
  11. for($j=$i+1;$j{
  12. if($style=='bts') $op=$arr[$i]else if($style=='stb') $op=$arr[$i]>$arr[$j];
  13. if($op)
  14. {
  15. $temp=$arr[$i];
  16. $arr[$i]=$arr[$j];
  17. $arr[$j]=$temp;
  18. $flag=true;
  19. }
  20. }
  21. if($flag==false)
  22. {
  23. break;
  24. }
  25. }
  26. foreach ($arr as $key => $value)
  27. {
  28. echo $value.',';
  29. }
  30. }
  31. $arr1=array(21.5,33,90,7,-4,5,55,11);
  32. selectSort($arr1,'stb');
  33. function selectSort($arr,$style)

  34. {
  35. $temp=0;
  36. $flag=false;
  37. for($i=0;$i{
  38. for($j=$i+1;$j{
  39. if($style=='bts') $op=$arr[$i]else if($style=='stb') $op=$arr[$i]>$arr[$j];
  40. if($op)
  41. {
  42. $temp=$arr[$i];
  43. $arr[$i]=$arr[$j];
  44. $arr[$j]=$temp;
  45. $flag=true;
  46. }
  47. }
  48. if($flag==false)
  49. {
  50. break;
  51. }
  52. }
  53. foreach ($arr as $key => $value)
  54. {
  55. echo $value.',';
  56. }
  57. }
  58. $arr1=array(21.5,33,90,7,-4,5,55,11);
  59. selectSort($arr1,'stb');
  60. echo "
    ";
  61. ?>
复制代码


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。