冒泡排序法算法基本原理:
一个具有N个无序元素的的整型数组Arr,按照以下步骤操作后可从小到大有序的排序:
1.从第一个元素开始,两两比较相邻的两个元素,如果前面的元素比后面的元素大,则交换位置。第一次结束后,最后一位为最大值。
2.再第一趟得到的数组的基础上继续从第一个元素开始,重复步骤1,只是最后一个最大值无需参与比较,比较次数少一次,第二次结束后,倒数第二位为第二大值。
3.重复以上步骤,每次从第一位元素开始,比较的次数都比上一次少一次。
代码实现:
php版:
<?php
$arr=array(20,10,50,90,30,70,40,60,80);
$count =count($arr);
for($i=0;$i<$count-1;$i++){
for($j=0;$j<$count-1-$i;$j++) {
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
结果输出排序后结果:
Array
(
[0] => 10
[1] => 20
[2] => 30
[3] => 40
[4] => 50
[5] => 60
[6] => 70
[7] => 80
[8] => 90
)
java版:
import java.util.Arrays;
public class MyBubbleSort {
public static void main(String[] args) {
int[] arr ={30,20,10,50,40,80,60,90,100,70};
System.out.println("排序前:" + Arrays.toString(arr));
int length = arr.length;
for (int i=0;i<length-1;i++){
for (int j=0;j<length-1-i;j++){
if (arr[j]>arr[j+1]){
SortTest.swap(arr, j, j+1);
}
}
}
System.out.println("排序后:"+Arrays.toString(arr));
}
}
排序结果:
排序前:[30, 20, 10, 50, 40, 80, 60, 90, 100, 70]
排序后:[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]