• 技术文章 >php教程 >php手册

    PHP的简易冒泡法代码分享

    2016-06-13 11:58:22原创346
    很基础的东西,感觉代码还不够简洁,希望高手指导修改

    复制代码 代码如下:


    function BubbleSort($str){
    for($i=0;$ifor ($k=count($str)-2;$k>=$i;$k--){//将这个值向前冒泡;
    if($str[$k+1]<$str[$k]){ //将小于号改为大于号,就是降序排列;
    $tmp=$str[$k+1];
    $str[$k+1]=$str[$k];
    $str[$k]=$tmp;
    }
    }
    }
    return $str;
    }
    //以下是测试
    $str=array(5,8,2,6,10,0,3,12,11);
    print_r(BubbleSort($str));
    ?>


    php 冒泡排序2
    基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
      由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
      用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复 9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的
    值依次为1,2,...10-i。

    复制代码 代码如下:


    function asc($a)
    {
    for($i=0;$i{
    for($j=0;$j{
    if($a[$j]>$a[$j+1])
    {
    $tmp=$a[$j+1];
    $a[$j+1]=$a[$j];
    $a[$j]=$tmp;
    }
    }
    }
    print_r($a);
    }
    $a = array(9,8,17,6,26,4,33,2,1);
    print_r(asc($a));
    ?>


    function desc($a)
    {
    $c=array();
    for($i=count($a)-1;$i>0;$i--)
    {
    for($j=0;$j{
    if($a[$j]<$a[$j+1])
    {
    $tmp=$a[$j+1];
    $a[$j+1]=$a[$j];
    $a[$j]=$tmp;
    }
    }
    }
    print_r($a);
    }
    $arr=array(33,24,56,55,59);
    desc($arr);
    ?>


    PHP冒泡排序法演示
    以前面试的时候考官出的笔试题,觉得比较XX,写程序应该是在计算机上面,而不是在笔头上。
    PHP程序文件sort_bubble_up.php

    复制代码 代码如下:



    冒泡排序法演示


    冒泡排序法演示



    //随机生成数组
    $arr=array();
    echo '';
    echo '';
    for($i=0;$i<10;$i++){
    $arr[$i]=rand();
    echo "";
    }
    //进行冒泡法排序
    for($i=9;$i>0;$i--){
    echo '';
    for($j=0;$j<$i;$j++){
    if($arr[$j]<$arr[$j+1]){
    $tmp=$arr[$j];
    $arr[$j]=$arr[$j+1];
    $arr[$j+1]=$tmp;
    }
    echo '';
    for($k=0;$k<10;$k++){
    switch($k){
    case $j : echo '";
    }
    echo '';
    }
    }
    //显示排序结果
    echo '';
    echo '';
    for($i=0;$i<10;$i++){
    echo "";
    }
    echo '';
    ?>
    初始值
    \$arr[$i]={$arr[$i]}
    第'.(10-$i).'次
    '; break;
    case $j+1 : echo '
    '; break;
    default : echo '
    ';
    }
    echo "\$arr[$k]={$arr[$k]}
    结果
    \$arr[$i]={$arr[$i]}



    样式表文件sort.css

    复制代码 代码如下:


    h1{text-align: center; color: blue;}
    table{font-size: 12px; font-family: arial; background-color: black; text-align: center;}
    td{background-color: white;}
    .base{background-color: #0FF;}
    .light{background-color: #0DD;}
    .title{background-color: #3FF; text-align: center;}

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP手机号码归属地查询代码(API接口/mysql) 下一篇:简单的方法让你的后台登录更加安全(php中加session验证)
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP.MVC的模板标签系统之初识PHP.MVC• PHP上传文件时自动分配路径的方法• php常见的魔术方法详解• php实现refresh刷新页面批量导入数据的方法• php批量添加数据与批量更新数据的实现方法,php添加数据
    1/1

    PHP中文网