冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!
冒泡排序的代码还是相当简单的,两层循环。外层冒泡轮数,里层依次比较。
我们看到嵌套循环,应该马上就可以得出这个算法的时间复杂度为O(n2)。
思考:如何优化?
package array; import java.util.Arrays; public class ArrayDemo07 { public static void main(String[] args) { int[] arr = {4,3,2,1}; sort(arr); System.out.println(Arrays.toString(arr)); } public static int[] sort(int[] a){ int temp = 0; //交换变量容器 //升序:把大的数往数组尾部移动,降序相反 //外循环控制遍历次数 (控制把大的数往数组尾部移动的次数) //减去 1 :因为其他的数都遍历过了,也就确定了结果了,不需要遍历剩下的那个数了 for (int i = 0; i < a.length - 1; i++) { //内循环控制每次遍历的比较次数 //减去 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; } } } return a; //把排序好的数组返回出去 } }
[1, 2, 3, 4]