首頁  >  文章  >  後端開發  >  php 陣列排序方法分享(冒泡排序、選擇排序)

php 陣列排序方法分享(冒泡排序、選擇排序)

WBOY
WBOY原創
2016-07-25 09:04:041187瀏覽
  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]<$arr[$j+1];
  8. else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
  9. if($op)
  10. {
  11. $temp=$arr[$j];
  12. $arr[$j]=$arr[$j+1];
  13. $arr[$j+1]=$temp;
  14. $flag=true;
  15. }
  16. }
  17. if($flag==false)
  18. {
  19. break;//当一次横向循环下来flag==false;说明纵向循环里每次相邻元素比较大小时if条件均不满足,即从小到大已排好,无需再横向循环
  20. }
  21. }
  22. foreach ($arr as $key => $value)
  23. {
  24. echo $value.',';
  25. }
  26. }
  27. $arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
  28. maoPao($arr1,'stb');//small to big
  29. ?>
复制代码

有关冒泡排序的例子,大家还可以参考如下的文章: 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]<$arr[$j];
  13. else if($style=='stb') $op=$arr[$i]>$arr[$j];
  14. if($op)
  15. {
  16. $temp=$arr[$i];
  17. $arr[$i]=$arr[$j];
  18. $arr[$j]=$temp;
  19. $flag=true;
  20. }
  21. }
  22. if($flag==false)
  23. {
  24. break;
  25. }
  26. }
  27. foreach ($arr as $key => $value)
  28. {
  29. echo $value.',';
  30. }
  31. }
  32. $arr1=array(21.5,33,90,7,-4,5,55,11);
  33. selectSort($arr1,'stb');

  34. function selectSort($arr,$style)

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

复制代码


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn