首页>代码>java冒泡排序算法实例>/sort/src/com/jackie/bubbleSort/BubbleSort01.java
package com.jackie.bubbleSort;

import java.util.Arrays;

/**
 * 用冒泡排序方法实现对 9 8 7 6 5 的升序排序
 * 思路分析:
 * 	第一趟:从以上数据中找出最大的数字9
 * 		第一次:8 9 7 6 5 	8和9交换
 * 		第二次:8 7 9 6 5		7和9交换
 * 		第三次:8 7 6 9 5 	6和9交换
 * 		第四次:8 7 6 5 9		5和9交换
 * 	第二趟:从以上数据中找出数字8
 * 		第一次:7 8 6 5 9 	7和8交换
 * 		第二次:7 6 8 5 9		6和8交换
 * 		第三次:7 6 5 8 9 	5和8交换
 * 		第四次:7 6 5 8 9		8和9交换,不用交换位置
 * 	第三趟:从以上数据中找出数字7
 * 		第一次:6 7 5 8 9	 	6和7交换
 * 		第二次:6 5 7 8 9		5和7交换
 * 		第三次:6 5 7 8 9 	7和8交换,不用交换位置
 * 		第四次:6 5 7 8 9		7和9交换,不用交换位置
 * 	第四趟:从以上数据中找出数字6
 * 		第一次:5 6 7 8 9	 	5和6交换
 * 		第二次:5 6 7 8 9		6和7交换,不用交换位置
 * 		第三次:5 6 7 8 9	 	6和8交换,不用交换位置
 * 		第四次:5 6 7 8 9		6和9交换,不用交换位置
 * @author liutao
 * @date 2017年12月4日 下午4:10:31
 */
public class BubbleSort01 {
	public static void main(String[] args) {
		int[] arr = {9,8,7,6,5};
		//sort01(arr);
		//sort02(arr);
		//sort03(arr);
		arr = new int[]{1,2,3,9,4};
		sort04(arr);
	}
	public static void sort01(int[] arr){
		
		int i = 0;
		int temp;
		System.out.print("第一趟  第一次:");
		if(arr[i] > arr[i + 1]){
			temp = arr[i];
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
		System.out.println(Arrays.toString(arr));
		i++;
		System.out.print("第一趟  第二次:");
		if(arr[i] > arr[i + 1]){
			temp = arr[i];
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
		System.out.println(Arrays.toString(arr));
		i++;
		System.out.print("第一趟  第三次:");
		if(arr[i] > arr[i + 1]){
			temp = arr[i];
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
		System.out.println(Arrays.toString(arr));
		i++;
		System.out.print("第一趟  第四次:");
		if(arr[i] > arr[i + 1]){
			temp = arr[i];
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
		System.out.println(Arrays.toString(arr));
	}
	/**
	 * 有以上的代码可以看出从第二次开始重复第一次的代码
	 * 且找出最大的数字9所用的次数为arr的长度减1次
	 * 因此可以将以上代码进行简化封装如下
	 * @param arr
	 */
	public static void sort02(int[] arr){
		int i = 0;
		int temp;
		for(;i < arr.length - 1; i ++){
			System.out.print("第 1 趟,第" + (i + 1) + "次:");
			if(arr[i] > arr[i + 1]){
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
			}
			System.out.println(Arrays.toString(arr));
		}
	}
	/**
	 * 由sort02可以得出,第二趟,第三趟....
	 * 重复第一趟的代码,由此有以下代码
	 * @param arr
	 */
	public static void sort03(int[] arr){
		int i = 0;
		int temp;
		for(;i < arr.length - 1; i ++){
			System.out.print("第 1 趟,第" + (i + 1) + "次:");
			if(arr[i] > arr[i + 1]){
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
			}
			System.out.println(Arrays.toString(arr));
		}
		i = 0;
		for(;i < arr.length - 1; i ++){
			System.out.print("第 2 趟,第" + (i + 1) + "次:");
			if(arr[i] > arr[i + 1]){
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
			}
			System.out.println(Arrays.toString(arr));
		}
		i = 0;
		for(;i < arr.length - 1; i ++){
			System.out.print("第 3 趟,第" + (i + 1) + "次:");
			if(arr[i] > arr[i + 1]){
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
			}
			System.out.println(Arrays.toString(arr));
		}
		i = 0;
		for(;i < arr.length - 1; i ++){
			System.out.print("第 4 趟,第" + (i + 1) + "次:");
			if(arr[i] > arr[i + 1]){
				temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
			}
			System.out.println(Arrays.toString(arr));
		}
	}
	/**
	 * 由以上分析结果可知
	 * 执行的趟数和次数均为所传递数组的长度减1
	 * 因此得出以下的版本
	 * @param arr
	 */
	public static void sort04(int[] arr){
		int temp;
		int len = arr.length;
		//执行趟数
		for(int j = 0;j < len - 1; j ++){
			//执行次数
			for(int i = 0;i < len - 1; i ++){
				System.out.print("第" + (j + 1) + "趟,");
				System.out.print("第" + (i + 1) + "次:");
				if(arr[i] > arr[i + 1]){
					temp = arr[i];
					arr[i] = arr[i + 1];
					arr[i + 1] = temp;
				}
				System.out.println(Arrays.toString(arr));
			}
		}
	}
}
最近下载更多
数据库1  LV12 2019年10月28日
378002843  LV9 2018年5月30日
故事_sun  LV26 2018年4月20日
最代码官方  LV168 2017年12月4日
最近浏览更多
dixiu000  LV4 2023年1月30日
微信网友_6040315240812544  LV8 2022年10月27日
pandahuo 2022年3月6日
暂无贡献等级
智禾信息 2021年12月29日
暂无贡献等级
wangwenzhong  LV9 2020年12月28日
kinggode  LV14 2020年7月28日
抗着大鸟打飞机  LV5 2020年6月30日
lllpppwww  LV5 2020年4月4日
wwwbl123  LV2 2020年3月11日
black8angel  LV4 2020年2月23日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友