冒泡动图
public class Sorting {
public static void main(String[] args) {
int[] a = {
3, 12, 17, 33, 2,14,1 };
for (int i = 0; i < a.length - 1; i++) {
//循环n-1次,每次将剩余数组的最大元素冒泡至剩余数组的最后,循环只进行n-1次,剩余的一个元素自然就会找到自己恰当的位置,***两两比较***
for (int j = 0; j < a.length - i - 1; j++) {
//每次只要比较除了排好序之外的遇到元素即可
if(a[j]>a[j+1]) {
int temp = 0;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int k = 0;k<a.length;k++) {
System.out.print(a[k]+" ");
}
}
}
该算法每次排序都把数值最大的元素放在最后,这样每次只需要排序最大值元素前面的数值,减小了时间复杂度。
时间复杂度
最优的时间复杂度为: O(n);//好奇
最差的时间复杂度为:O( n^2 );
平均的时间复杂度为:O( n^2 );
空间复杂度
最优的空间复杂度就是开始元素顺序已经排好了,则空间复杂度为:0;
最差的空间复杂度就是开始元素逆序排序了,则空间复杂度为:O(n);
平均的空间复杂度为:O(1);