Java之冒泡排序

思想:每一轮比较得到结果是剩余元素中最大的值==》放到最右边

操作:比较和交换

===》具体分析思路:

class ArraySort {
	public static void main(String[] args) {
		int[] arr = {5,32,15,2,23,7,77,1,55};
		sort(arr);
		/*
		System.out.println(arr[5]);//打印最后一个 元素
		System.out.println(arr[4]);
		System.out.println(arr[3]);
		System.out.println(arr[2]);
		System.out.println(arr[1]);
		System.out.println(arr[0]);
		System.out.println(arr[6]);
		System.out.println(arr[7]);
		System.out.println(arr[8]);
		*/
		/*
			调用方法3中方式:1.类名.方法名();有static修饰
							2.对象名.方法名();没有有static修饰
							3.方法名();在同一个类中,都有或都没有static修饰
		*/
		PrintArr.printArr(arr);
	}

	/**
		定义一个方法实现 数组从小到大的排序
	*/
	public static void sort(int[] arr) {
		/*
		//第1轮 得到最大的值放到最右边
		//第1轮 第1次 比较第1个元素和第2个元素大小,如果第1个元素大于第2个元素,那么作交换
		if(arr[0] > arr[1]){
			int temp = arr[0];
			arr[0] = arr[1];
			arr[1] = temp;
		}
		//第1轮 第2次 比较第2个元素和第3个元素大小,如果第2个元素大于第3个元素,那么作交换
		if(arr[1] > arr[2]){
			int temp = arr[1];
			arr[1] = arr[2];
			arr[2] = temp;
		}
		//第1轮 第3次 比较第3个元素和第4个元素大小,如果第3个元素大于第4个元素,那么作交换
		if(arr[2] > arr[3]){
			int temp = arr[2];
			arr[2] = arr[3];
			arr[3] = temp;
		}
		//第1轮 第4次 比较第4个元素和第5个元素大小,如果第4个元素大于第5个元素,那么作交换
		if(arr[3] > arr[4]){
			int temp = arr[3];
			arr[3] = arr[4];
			arr[4] = temp;
		}
		//第1轮 第5次 比较第5个元素和第6个元素大小,如果第5个元素大于第6个元素,那么作交换
		if(arr[4] > arr[5]){
			int temp = arr[4];
			arr[4] = arr[5];
			arr[5] = temp;
		}
		*/
		//优化上面代码
		//第1轮 
		/*
		for(int i=0;i<=4;i++){
			if(arr[i] > arr[i+1]){
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		//第2轮 得到剩余最大的值放到剩余位置最右边
		for(int i=0;i<=3;i++){
			if(arr[i] > arr[i+1]){
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		//第3轮 得到剩余最大的值放到剩余位置最右边
		for(int i=0;i<=2;i++){
			if(arr[i] > arr[i+1]){
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		//第4轮 得到剩余最大的值放到剩余位置最右边
		for(int i=0;i<=1;i++){
			if(arr[i] > arr[i+1]){
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		//第5轮 得到剩余最大的值放到剩余位置最右边
		for(int i=0;i<=0;i++){
			if(arr[i] > arr[i+1]){
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		*/
		//优化上面代码
		for(int j=0;j<=arr.length-2;j++){
			for(int i=0;i<=arr.length-2-j;i++){
				if(arr[i] > arr[i+1]){
					int temp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
		}
	}

}

猜你喜欢

转载自blog.csdn.net/qq_38225558/article/details/81634107