信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 1278|回复: 1
打印 上一主题 下一主题

PHP排序算法

[复制链接]
  • TA的每日心情
    开心
    2016-1-18 12:18
  • 签到天数: 117 天

    [LV.6]常住居民II

    跳转到指定楼层
    楼主
    发表于 2009-8-17 22:04:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    冒泡排序算法
    <?php

    //冒泡排序算法

    $arr = array(12,52,14,43,24,58,15,64,24,57,17,56,45
    );

    $count = count($arr
    );

    for(
    $i = $count-1; $i>0; --$i
    )

    {

    for(
    $j = 0; $j < $i; ++$j
    )

    {

      if(
    $arr[$j] > $arr[$j + 1
    ])

      {

       
    $temp = $arr[$j
    ];

       
    $arr[$j] = $arr[$j+1
    ];

       
    $arr[$j+1] = $temp
    ;

      }

    }

    }

    print_r($arr
    );

    ?>



    复制代码
    插入排序: <?php

    for($i=0; $i<1000; ++$i)

    {

    $arr[] = mt_rand(1,1000);

    }

    $count = count($arr);

    $start = microtime(true);

    for (
    $i = 1; $i < $count ; ++$i)

    {

    $temp = $arr[$i];

    $j = $i;

    while(
    $j > 0 && $arr[$j-1] >= $temp)

    {

      
    $arr[$j] = $arr[$j-1];

      --
    $j;

    }

    $arr[$j] = $temp;

    }

    ?>

    复制代码
    快速排序: <?php

    $start
    = microtime(true);

    function
    initArr()

    {

    for(
    $i=0; $i<10; ++$i)

    {

      
    $arr[] = mt_rand(1,100);

    }

    return
    $arr;

    }

    function
    swap(&$arr, $leftptr, $rightptr)

    {

    $temp = $arr[$leftptr];

    $arr[$leftptr] = $arr[$rightptr];

    $arr[$rightptr] = $temp;

    }



    function
    quickSort()

    {

    $arr = initArr();

    $count = count($arr);

    recQuickSort($arr, 0, $count-1);



    print_r($arr);

    }

    function
    recQuickSort(&$arr, $left, $right)

    {

    if(
    $right - $left <=0)

    return;

    else{

      
    $pivot = $arr[$right];

      

      
    $partition = patitionIt($arr, $left, $right, $pivot);

      
    recQuickSort($arr, $left, $partition-1);

      
    recQuickSort($arr, $partition +1, $right);

    }

    }

    function
    patitionIt(&$arr, $left, $right, $pivot)

    {

    $leftptr = $left - 1;

    $rightptr = $right;



    while (
    true)

    {

      while (
    $arr[++$leftptr] < $pivot)

      {

       ;

      }   

      while (
    $rightptr > 0 &&

       
    $arr[--$rightptr] > $pivot)

        {

        }

      if(
    $leftptr >= $rightptr)

      {

       break;

      }else

      {

       
    swap($arr, $leftptr, $rightptr);

      }

    }

    return
    $leftptr;

    }

    quickSort();

    $end = microtime(true);

    echo
    $end - $start;

    ?>

    复制代码
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享 顶 踩

    该用户从未签到

    升级  74%

    沙发
    发表于 2012-4-17 13:51:59 | 只看该作者
    謝謝,希望以後多些
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-5 18:44

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表