冒泡排序的通俗解释
排序过程如冒泡一样,比如我们排正序,每一次都有一个起始数据,用这个数据和它的下一个的数据比大小,如果我们的起始数据比它下一个的数据大,那么我们就交换这两个数据,然后指针向后移动,如果起始数据小于等于它的下一个,那么不做交换,只指针后移,这样第一趟下来,最大的数就让我们移动到了最后,数组的最后以为就保留下来,下一次循环中最大的数就到了倒数第二个为止,以此类推,直到排序完成。
所以上述的过程其实就是经历了2层循环,第一层循环代表着从后往前确定由大到小的数,第二层循环代表着数据比较,找到每次循环中的最大值,所以时间复杂度为O(n^2)。
冒泡排序过程的动图展示
冒泡排序的代码实现
public static void main(String[] args) throws Exception {
int[] data = new int[]{4,3,2,6,1,8,5,4,10,9};
sort(data);
System.out.println(Arrays.toString(data));
}
public static void sort(int[] data){
//第一层循环,从后往前,不断的确定下层循环找到的最大值
for (int i = data.length-1; i >0; i--) {
//找到每次循环的最大值
for(int j = 0;j<data.length-1;j++){
if(data[j]>data[j+1]){
int temp = data[j];
data[j] = data[j+1];
data[j+1] =temp;
}
}
}
}