欢迎探讨,如有错误敬请指正
介绍
第一次写简书,一直想自己建个博客,来写入自己的学习中遇见的问题,但是可能自己比较懒吧,博客到现在还没有起来,但是以后博客肯定是会有的。学冒泡算法很久了 ,但是很多时候总是记不住,今天就把冒泡顺序记录一遍吧。
1、何为冒泡算法?
冒泡排序是一种简单的排序方法,它的基本思想是:通过相邻两个元素之间的比较和交换,使较大的元素逐渐从前面移向后面(升序),就像水底下的气泡一样逐渐向上冒泡,所以被称为“冒泡”排序。冒泡排序的最坏时间复杂度为O(n2),平均时间复杂度为O(n2)
2、代码
Demo.java
public static void main(String[] args) {
double[] a = {1,5,0,50,20,10,13,19};
double temp = 0;
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if (a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (double d : a) {
System.out.print(d+" ");
}
}
}
首先:
第一个for是来记录这是第几轮比较
eg:此程序有8个数,for的条件是(数组大小-1),意思是要进行7轮的交换,同时i也可以表示为 此轮比较结束之后,有多少个数是已经排好序的数。
第二个for是来判断此轮比较,两个数之间交换需要进行几次,所以是第一个for循环条件再减去已经排好序的几个数(i),所以才得a.length-1-i