background image

PHP 学习:PHP 的简易冒泡法代码

基础的东西,感觉代码还不够简洁,希望高手指导修改,脚本之家特为大家多准备了几个,
方便测试
代码如下

:

<?php 

function

 BubbleSort(

$str

){ 

for

(

$i

=0;

$i

<

count

(

$str

);

$i

++){

//从数组末尾取一个值; 

for

 (

$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。 

代码如下

:

 
<?php 

function

 asc(

$a