做了很多年的代码工作每次面试算法都挂
最近整理了一下面试最多的冒泡算法
PHP版本
<?php
$baseData = array(10,5,8,2,3);
$dataLen = count($baseData);
$a = 0;
for($i=0;$i<$dataLen;$i++){
for($j=0;$j<$dataLen-1-$i;$j++){
++$a;
$newData = 0;
if($baseData[$j]>$baseData[$j+1]){
$newData = $baseData[$j];
$baseData[$j] = $baseData[$j+1];
$baseData[$j+1] = $newData;
}
}
}
echo "循环次数:".$a."\n";
print_r($baseData);
排序结果:
JAVA版本
int[] a = new int[]{10,5,8,2,3};
int test = 0;
int abc=0;
for(int j=0;j<a.length;j++){
for(int kj=0;kj<a.length-1-j;kj++){
++abc;
if(a[kj]>a[kj+1]){
test = a[kj];
a[kj] = a[kj+1];
a[kj+1] = test;
}
}
}
System.out.println("\n循环次数:"+abc);
for(int i=0;i<a.length;i++){
System.out.println(a[i]+"\r");
}
排序结果:
这里需要注意的是内循环有一个减一的过程,否则会出现现下标越界的异常