冒泡排序
冒泡排序
冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!
冒泡排序的代码还是相当简单的,两层循环。外层冒泡轮数,里层依次比较。
我们看到嵌套循环,应该马上就可以得出这个算法的时间复杂度为O(n2)。
思考:如何优化?
ArrayDemo07
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]