自学算法——啊哈第二天_冒泡排序
算法原理
冒泡算法的理念就是每次挑选出最大或者最小的一个,实现方法:列如5个数3,1,4,5,2 ,将这5个数从大到小排序,第一步3和1比较,3比1大,不用换,然后1和4比较,1<4,交换这 两个数,就是3,4,1,5,2。然后1和5比较,1<5交换,34512.之后1和2比较,1<2交换,最终1到了最末尾,就是34521,以此类推
算法优点
冒泡排序实现起来比较简单,空间复杂度很小,排列几个数就用几个数组空间就好,相对简单桶排序来说空间利用率提高了很多
算法缺点
虽然冒泡排序大幅减少了空间复杂度,但是相对的时间复杂度却过于太高,排序的数越多,算法实现的时间就成倍提升。时间复杂度有O(N*N)级别,第一个n是外循环次数,第二个n是内循环次数,而桶排序只有O(m+n)级别。
代码示例
package day191116_M;
import java.util.Random;
//算法第二天,今天进行冒泡排序算法的回顾和理解
public class BubbleSort {
public static void main(String[] args) {
int n = 5;
int[] s = new int[n];
// 随机生成数据
for (int i = 0; i < n; i++) {
s[i] = new Random().nextInt(n);
}
// 排序算法核心
for (int j = 0; j < n - 1; j++) {
for (int k = 0; k < s.length - j - 1; k++) {
if (s[k] < s[k + 1]) {
int temp = s[k];
s[k] = s[k + 1];
s[k + 1] = temp;
}
}
}
// 排序完成,输出结果
System.out.println("排序结果为:");
for (int l = 0; l < s.length; l++) {
System.out.print(s[l] + " ");
}
}
}