014-再讲【冒泡排序】,超详细

  1. 今天得到任务,给一些基础比较差的同学,讲解【数据结构】这门课,用Java语言;
  2. 首先,通过一个简单的课程入个门,那就拿【冒泡排序】来讲解;
  3. 贴代码,一句一句详解,大家认真看
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);


	}


}

猜你喜欢

转载自blog.csdn.net/qq_31698195/article/details/80857399
今日推荐