我看了一下答案, 没看懂, 但是我自己用方法写出来了。
帮忙看一下他的答案是什么意思呢。题目: 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)<?php
//我自己写的方法, 思想比较简单
function demo_sort(&$arr)
{
$cnt = count($arr);
for($i=0;$i<$cnt;$i++)
{
for ($y=0;$y<$cnt;$y++)
{
if( $arr[$i] > $arr[$y])
{
$temp = $arr[$i];
$arr[$i] = $arr[$y];
$arr[$y] = $temp; 
}
}
}
}$arr = array(1,3,7,2,11,5,6,8);
demo_sort($arr);
var_dump($arr);?> <?php
 //答案里的方法
 function BubbleSort(&$arr)
 {
     $cnt=count($arr);
     $flag=1;
     for($i=0;$i<$cnt;$i++)
      {
         if($flag==0)
          {
             return;
          }
         $flag=0;
         for($j=0;$j<$cnt-$i-1;$j++)
          {
             if($arr[$j]<$arr[$j+1])
              {
                 $tmp=$arr[$j];
                 $arr[$j]=$arr[$j+1];
                 $arr[$j+1]=$tmp;
                 $flag=1;
              }
          }
      }
 }
 $test=array(1,3,6,8,2,7);
 BubbleSort($test);
 var_dump($test);
 ?>

解决方案 »

  1.   

    其实你这个是冒泡排序吧!其实优化也就是定义2个变量一个记录值,一个记录下标。没学过PHP看着很别扭,你应该懂js,用JS写给你看看对不对!
    var array =new Array(3,1,5,7,4);
    function selectSort(x)
    {
     
      for(var i = 0;i<x.length;i++)
    {
       var x = x[i];
       var y =i;
    for(var j=x+1;j<x.length;j++)
    {
      if(x<x[j])
    [
      j=x;
      y=j;
    ]
    if(y!=x)
    {交换}
    }}}
    selectSort(array,x,y);
      

  2.   

    你还是看第二个吧,刚才忘了没排版,我也看不下去function selectSort2(arr)
    {
    for(var i=0;i<arr.length;i++)
    {
    var num=arr[i];//num记录元素值
    var index =i;//index记录元素下标
    for(var j=i+1;j<arr.length;j++)
    {
    if(num>arr[j])
    {
    num=arr[j];//记录最小值
    index =j;//记录下标最小的值
    }
    }
    if(index!=i)//避免下标相等。
    {
    var temp = arr[i];
    arr[i]=arr[index];
    arr[index]=temp;
    }
    }
    return arr;
    }
      

  3.   

    冒泡排序,why not 快速排序。