八大排序之一:冒泡排序
-
基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
-
直观表达,每一趟遍历,将一个最大的数移到序列末尾。
1.算法描述
1.比较数组中两个相邻的元素,如果第一个数比第二个数大,就互换他们的位置
2.每一次比较,都会产生一个最大的数,(或者最小的数)
3.下一轮则会少一轮比较
4.依次循环,直到结束
如下图所示:
代码实现:
import java.util.Arrays;
/**
* @author 小布
* @site 站点
* @company 公司
* @create 2020-01-23 21:36
*/
public class BubblingDemo {
public static void main(String[] args) {
int [] arr={1,3,2,8,5,6,9,10,4,25,7};
sort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 冒泡排序:
* 1.比较数组中两个相邻的元素,如果第一个数比第二个数大,就互换他们的位置
* 2.每一次比较,都会产生一个最大的数,或者最小的数
* 3.下一轮则会少一轮比较
* 4.依次循环,直到结束
* @param arr
* @return
*/
public static int[] sort(int[] arr){
//临时变量
int temp=0;
//外层循环,判断我们走多少次
for (int i = 0; i < arr.length-1; i++) {
boolean flag=false;//减少没有意义的比较
//内层循环,比较两个数的大小,如果第一个数比第二个数大,就互换他们的位置
for (int j = 0; j <arr.length-1-i ; j++) {
if(arr[j+1]<arr[j]){
temp= arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
flag=true;
}
}
if(flag==false){
break;
}
}
return arr;
}
}