JAVA——实现数组排序:(冒泡排序)

题目:数组排序:(冒泡排序)

public class ArrayDemo {
	public static void main(String[] args) {
		//定义一个int类型的数组
		int[] arr = {24,69,80,57,13};
		
		/*
		//第一次比较
		//arr.length-1是为了防止索引越界
		//arr.length-1-0是为了减少比较的次数
		for(int x=0; x<arr.length-1-0; x++) {
			//ArrayIndexOutOfBoundsException
			if(arr[x] > arr[x+1]) {
				//交换数据
				int temp = arr[x];
				arr[x] = arr[x+1];
				arr[x+1] = temp;
			}
		}
		//调用遍历方法
		System.out.println("第一次比较完毕:");
		printArray(arr);
		
		//第二次比较
		//arr.length-1是为了防止索引越界
		//arr.length-1-1是为了减少比较的次数
		for(int x=0; x<arr.length-1-1; x++) {
			//ArrayIndexOutOfBoundsException
			if(arr[x] > arr[x+1]) {
				//交换数据
				int temp = arr[x];
				arr[x] = arr[x+1];
				arr[x+1] = temp;
			}
		}
		//调用遍历方法
		System.out.println("第二次比较完毕:");
		printArray(arr);
		
		//第三次比较
		//arr.length-1是为了防止索引越界
		//arr.length-1-2是为了减少比较的次数
		for(int x=0; x<arr.length-1-2; x++) {
			//ArrayIndexOutOfBoundsException
			if(arr[x] > arr[x+1]) {
				//交换数据
				int temp = arr[x];
				arr[x] = arr[x+1];
				arr[x+1] = temp;
			}
		}
		//调用遍历方法
		System.out.println("第三次比较完毕:");
		printArray(arr);
		
		//第四次比较
		//arr.length-1是为了防止索引越界
		//arr.length-1-3是为了减少比较的次数
		for(int x=0; x<arr.length-1-3; x++) {
			//ArrayIndexOutOfBoundsException
			if(arr[x] > arr[x+1]) {
				//交换数据
				int temp = arr[x];
				arr[x] = arr[x+1];
				arr[x+1] = temp;
			}
		}
		//调用遍历方法
		System.out.println("第四次比较完毕:");
		printArray(arr);
		*/
		
		//用循环改进
		/*
		for(int y=0; y<4; y++) {
			for(int x=0; x<arr.length-1-y; x++) {
				if(arr[x] > arr[x+1]) {
					//交换数据
					int temp = arr[x];
					arr[x] = arr[x+1];
					arr[x+1] = temp;
				}
			}
		}
		*/
		
		/*
		//循环做的次数不能写固定的值,用arr.length-1改进即可
		for(int y=0; y<arr.length-1; y++) {
			for(int x=0; x<arr.length-1-y; x++) {
				if(arr[x] > arr[x+1]) {
					//交换数据
					int temp = arr[x];
					arr[x] = arr[x+1];
					arr[x+1] = temp;
				}
			}
		}
		printArray(arr);
		*/
		
		//如果我有多个数组要排序,每个数组写这样的一段代码,太麻烦,怎么办呢
		//用方法改进
		sort(arr);
		System.out.println("排序后:");
		printArray(arr);
	}
	/*
		需求:数组排序:(冒泡排序)
		分析:
		第一步:定义数组int[] arr = {24,69,80,57,13};
		第二步:对数组遍历,同时对其进行排序
		第三步:打印遍历后的数组元素
	 */
	/*
	 * 两个明确:
	 * 		返回值类型:void
	 * 		参数列表:int[] arr
	 */
	public static void sort(int[] arr) {
		for(int x=0; x<arr.length-1; x++) {// 控制的比较的次数
			for(int y=0; y<arr.length-1-x; y++) {// 控制的是每次 相邻元素比较的次数
				if(arr[y] > arr[y+1]) {
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;  
				}
			}
		}
	}
	/*
	 * 数组遍历
	 */
	public static void printArray(int[] arr) {
		System.out.print("[");
		for(int x=0; x<arr.length; x++) {
			if(x==arr.length-1) {
				System.out.print(arr[x]);
			}else {
				System.out.print(arr[x]+", ");
			}
		}
		System.out.println("]");
	}
}

输出结果如下:

排序后:
[13, 24, 57, 69, 80]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据架构师Pony

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值