我看了一下答案, 没看懂, 但是我自己用方法写出来了。
帮忙看一下他的答案是什么意思呢。题目: 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用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);
?>
帮忙看一下他的答案是什么意思呢。题目: 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用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);
?>
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);
{
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;
}