+ -
当前位置:首页 → 问答吧 → 求助 php数组排序问题 面试题

求助 php数组排序问题 面试题

时间:2008-09-05

来源:互联网

现在有一个一维数组,值是整数,要写一个函数让值自动排序,按大小
$a=array(
    9,
    1,
    3,
    6,
    8,
);
上面这个要变成这个,
$a=array(
    1,
    3,
    4,
    8,
    9,
);
用什么方法
不能用PHP自带函数  

非常感谢!!!!!

作者: liuhaibin   发布时间: 2008-09-05

[php]
$values = array(9, 3, 2 , 6, 8);
foreach($values as $val){
            $min = min($values);
            $key = array_search($min, $values);
            $result[] = $min;
            unset($values[$key]);
    }
print_r($result);
[/php]
如有键名可以再加上去掉键名的一步键名~

作者: haowubai   发布时间: 2008-09-05

看看老大写的,学习下

作者: 神啊   发布时间: 2008-09-05

学习

作者: xup1zqz   发布时间: 2008-09-05

看看老大写的哦~!

作者: hierophant   发布时间: 2008-09-05

123123123123

作者: mengyu   发布时间: 2008-09-05

作者: peiguohui88   发布时间: 2008-09-05

果然高~~~老大的函数用于的不错~~哈哈~~

受益匪浅~~

作者: 神啊   发布时间: 2008-09-05

[php]
function BubbleSort($str)
{
for ($i=0;$i<count($str);$i++)
{        
        for ($j=count($str)-2;$j>=$i;$j--)
        {
                        if($str[$j+1]<$str[$j])
                        {  
                                $tmp = $str[$j+1];
                                
                                $str[$j+1]=$str[$j];
                                $str[$j]=$tmp;
                        }

        }

}
return $str;
}
$str = array(3,6,1,5,9,0,4,6,11);
print_r(BubbleSort($str));
[/php]

作者: returneret   发布时间: 2008-09-05

又要登录一下,

作者: php好1   发布时间: 2008-09-05

引用
引用第8楼returneret于2008-09-05 10:16发表的  :
<?php
function BubbleSort($str)
{
for ($i=0;$i<count($str);$i++)
{        
.......


鄙视你啊,让你写,不是让你找,谁不会啊

作者: 神啊   发布时间: 2008-09-05

[php]
<html>
<head><title>冒泡排序法演示</title><head>
<style>
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;}
</style>

<body>
<h1>冒泡排序法演示</h1>
<table cellpadding="5" cellspacing="1" border="0"   align="center">
<?php
//随机生成数组
$arr=array();
echo '<tr><td   colspan="10" class="title">初始值</td></tr>';
echo '<tr>';
for($i=0;$i<10;$i++){
    $arr[$i]=rand();
    echo "<td>\$arr[$i]={$arr[$i]}</td>";
}
//进行冒泡法排序
for($i=9;$i>0;$i--){
     echo '<tr><td   colspan="10" class="title">第'.(10-$i).'次</td></tr>';
    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 '<tr>';
        for($k=0;$k<10;$k++){
            switch($k){
                case $j :   echo '<td   class="base">'; break;
                case $j+1   :   echo '<td   class="light">'; break;
                default :   echo '<td>';
            }
            echo "\$arr[$k]={$arr[$k]}</td>";
        }
        echo '</tr>';
    }
}
//显示排序结果
echo '<tr><td   colspan="10" class="title">结果</td></tr>';
echo '<tr>';
for($i=0;$i<10;$i++){
    echo "<td>\$arr[$i]={$arr[$i]}</td>";
}
echo '</tr>';
?>
</table>
    </body></html>
[/php]

作者: returneret   发布时间: 2008-09-05

function BubbleSort($str)
{
for ($i=0;$i<count($str);$i++)
{        
        for ($j=i+1;$j<count($str);$j++)
        {
                        if($str[$i]>$str[$j])
                        {  
                                $tmp = $str[$j];
                                $str[$j]=$str[$i];
                                $str[$i]=$tmp;
                        }

        }

}
return $str;
}
-------------------------------------------------------------------
随便改了一下,不知道行不行.

作者: zshmail   发布时间: 2008-09-05

学习中,请勿打扰!

作者: 蓝海   发布时间: 2008-09-05

<?
function add($strs){
   $i = strlen($strs);
          for($a=$i;$a>=0;$a--){
                  echo $strs{$a};
                }
                }        
add(abcd);
?>  这是我写的  可惜了还是用到了函数...

作者: mataoangel   发布时间: 2008-09-05

<?php
    $s = "ABCDEF";
    $i=0;
    while(isset($s{$i})) {
        $r = $s{$i}.$r;  //这个语句不是很明白? $s{$i}  这是什么意思?
    $i++;
    }
    echo $r;
?>
这是高手写的   . $r  我不明白是 什么意思

作者: mataoangel   发布时间: 2008-09-05

一般用冒泡排序就行了

作者: alexchang   发布时间: 2008-09-26

老大的方法好是好但原来的数组就没有了,虽然冒泡排序的效率差一些但不会去掉原来的数组
二种方法都OK

作者: 雁行天下   发布时间: 2008-09-28

zshmail 老兄的代码输出的答案不对,第三行的i少了1美元啊,哈哈

作者: alexchang   发布时间: 2008-09-28

学习中ing…………

作者: symbolamb   发布时间: 2008-09-29

数组排序一般可以用冒泡法和二分法来做,,

php似乎有更简单的做法,,就像站长写的那样,,

后面那个兄弟用的就是冒泡法

作者: chatop   发布时间: 2008-09-29

大家一起努力 学好php

作者: lampsister   发布时间: 2008-10-01

强啊

作者: cmq86   发布时间: 2009-11-02

haowubai犯规了。用了min()函数

作者: laobi   发布时间: 2009-11-02

这些都是看算法的
什么语言都一样,这题不算难

作者: 恋恋秋风   发布时间: 2009-11-02

觉得冒泡排序好点!!

作者: pino_   发布时间: 2010-04-08

我喜欢

作者: zxy123   发布时间: 2010-04-24

不错·厉害

作者: zwaspace   发布时间: 2010-04-25

行啊

作者: liuhao123   发布时间: 2010-05-28

作者: a28794708   发布时间: 2010-09-03