很基础的东西,感觉代码还不够简洁,希望高手指导修改
function BubbleSort($str){ for($i=0;$ifor ($k=count($str)-2;$k>=$i;$k--){//将这个值向前冒泡; if($str[$k+1]$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。
function asc($a) { for($i=0;$i{ for($j=0;$j{ if($a[$j]>$a[$j+1]) { $tmp=$a[$j+1]; $a[$j+1]=$a[$j]; $a[$j]=$tmp; } } } print_r($a); } $a = array(9,8,17,6,26,4,33,2,1); print_r(asc($a)); ?> function desc($a) { $c=array(); for($i=count($a)-1;$i>0;$i--) { for($j=0;$j{ if($a[$j]{ $tmp=$a[$j+1]; $a[$j+1]=$a[$j]; $a[$j]=$tmp; } } } print_r($a); } $arr=array(33,24,56,55,59); desc($arr); ?>
PHP冒泡排序法演示 以前面试的时候考官出的笔试题,觉得比较XX,写程序应该是在计算机上面,而不是在笔头上。
PHP程序文件sort_bubble_up.php
冒泡排序法演示 冒泡排序法演示 //随机生成数组 $arr=array(); echo '初始值 '; echo ''; for($i=0;$i$arr[$i]=rand(); echo "\$arr[$i]={$arr[$i]} "; } //进行冒泡法排序 for($i=9;$i>0;$i--){ echo '
第'.(10-$i).'次 '; for($j=0;$jif($arr[$j]$tmp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$tmp; } echo ''; for($k=0;$kswitch($k){ case $j : echo ''; break; case $j+1 : echo '
'; break; default : echo '
'; } echo "\$arr[$k]={$arr[$k]} "; } echo ' '; } } //显示排序结果 echo '结果 '; echo ''; for($i=0;$iecho "\$arr[$i]={$arr[$i]} "; } echo ' '; ?>
样式表文件sort.css
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;}