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

    php不用内置函数对数组排序的两个算法代码

    2016-06-06 20:32:53原创998

    php不用内置函数对数组排序,可能是降序或者升序

    一朋友找工作遇到的试题,备注一下。
    极有可能今后我也会遇到的。
    问题:php不用内置函数对数组排序,可能是降序或者升序
    第一种方法:传说中的冒泡法
    代码如下:
    function arraysort($data, $order = 'asc') {
    //asc升序 desc降序
    $temp = array ();
    $count = count ( $data );
    if ($count <= 0)
    return false; //传入的数据不正确
    if ($order == 'asc') {
    for($i = 0; $i < $count; $i ++) {
    for($j = $count - 1; $j > $i; $j --) {
    if ($data [$j] < $data [$j - 1]) {
    //交换两个数据的位置
    $temp = $data [$j];
    $data [$j] = $data [$j - 1];
    $data [$j - 1] = $temp;
    }
    }
    }
    } else {
    for($i = 0; $i < $count; $i ++) {
    for($j = $count - 1; $j > $i; $j --) {
    if ($data [$j] > $data [$j - 1]) {
    $temp = $data [$j];
    $data [$j] = $data [$j - 1];
    $data [$j - 1] = $temp;
    }
    }
    }
    }
    return $data;
    }
    $data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
    var_dump ( arraysort ( $data ) ); //升序
    echo ('
    ');
    var_dump ( arraysort ( $data ,'desc') );//降序

    第二种方法:不知道取个什么名字好,就叫插入法吧!囧
    代码如下:
    function arraysort3($data, $order = 'asc') {
    //目前只做升序排列
    $count = count ( $data );
    for($i = 1; $i < $count; $i ++) {
    $temp = $data [$i];
    $j = $i - 1;
    while ( $data [$j] > $temp ) {
    $data [$j + 1] = $data [$j];
    $data [$j] = $temp;
    $j --;//为什么要递减:从高位逐位判断
    }
    }
    return $data;
    }
    $data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
    var_dump ( arraysort3 ( $data ) ); //升序
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 数组排序
    上一篇:php 连接mssql数据库 初学php笔记 下一篇:Search File Contents PHP 搜索目录文本内容的代码
    Web大前端开发直播班

    相关文章推荐

    • web上存漏洞及原理分析、防范方法(安全文件上存方法)• 浅析php变量修饰符static的使用• PHP支持多种格式图片上传(支持jpg、png、gif)• 在Windows系统上安装PHP运行环境文字教程• PHP中函数内引用全局变量的方法
    1/1

    PHP中文网