- 今天得到任务,给一些基础比较差的同学,讲解【数据结构】这门课,用Java语言;
- 首先,通过一个简单的课程入个门,那就拿【冒泡排序】来讲解;
- 贴代码,一句一句详解,大家认真看
package javaOS;
import java.util.Arrays;
public class Main {
//名字是bubbleSort,也就是冒泡排序
private static void bubbleSort(int[] array) {
// TODO Auto-generated method stub
//这里看上去像是建立一个【死循环】,但是妙处在后面,这里代表一个数组被【一次一次】刷过去,那么问题就是什么时候刷完呢?
while (true) {
//这里插个旗,如果有一次不是【true】,那么说明进入了里面的那次循环,也就是进行了一次【冒泡排序】
boolean flag = true;
//这里从第一个数字开始比,它比的对象是第二个数字,所以第一个如果是【i】,那么第二个就是【i+1】,
这样的话这个循环的最大长度不能超过【.length-1】,这也就是为什么循环到【.length-1】就停止的缘故
//
for (int i = 0; i < array.length - 1; i++) {
//和相邻的元素进行比较,如果前者大于后者,那么泡泡冒上去
if (array[i] > array[i + 1]) {
int t = array[i];
array[i] = array[i + 1];
array[i + 1] = t;
//这个地方判断,如果进行了【冒泡排序】,那么把旗子设置为【flag】
flag = false;
}
}
//这里的flag,不是错误的写法,而是一种简单的写法,也就是为true,代表的是刚才的那个第二层循环没有进去,没有把
flag变为false,所以发生了什么呢,发生了【冒泡排序执行完毕】。
if (flag) {
//既然执行完毕,那么可以跳出
break;
}
//每次排序一次呢,都可以打印出当前的排序情况,如果你有兴趣,可以加上【第几次排序:】,这里只需要加一个变量k即可,
太简单了我就这里不赘述了昂···
System.out.println(Arrays.toString(array));
}
}
public static void main(String[] args) {
//给数组,排序,没了,学懂了吗?
int[] array = { 4, 2, 8, 9, 5, 7, 6, 1, 3 };
bubbleSort(array);
}
}