排序之冒泡排序(java版)

前言

最近面试算法岗被面试官问到:简单介绍一下快速排序的原理,当时大脑一片空白,真是耻辱啊,作为一个计算机的研究生,连这都回答不上来,所以痛定思痛,准备出一个排序算法的介绍系列,今天从最简单的冒泡排序开始说起。

原理

大家一定要彻底理解这里的“冒泡”,众所周知,在水中,水泡越往上越大,所以冒泡也就是说逐渐的将最大的“冒”出来,举例如下:[4,5,1,3,7]。
冒泡算法的过程就是第一轮:4和5比,不动;5和1比,互换;5和3比,互换;5和7比,不动。
以上第一轮就把最大值7给“冒”到了最后的位置。
然后就是重复进行这一过程,这里需要注意的一点是因为第一轮已经把最大的给冒了出来,所以第二轮只需要对次大值进行“冒泡”操作,表现在代码是就是可以减少一次对比,以此类推,后面可以相应的减少两次,三次,四次。。。
直到最小值确定,放在第一位。
程序结束。

代码

package basicDatastructure;

public class BubbleSort {
	public static int [] bubble(int arr[]) {
		int temp; //设置一个临时变量,为了交换位置的时候使用。
		for (int i = 0; i < arr.length-1; i++) {
			
			for (int j = 0; j < arr.length-1-i; j++) {//这里就是在减少比较的次数。
				if (arr[j]>arr[j+1]) {  //交换位置。
					temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
					
				}
				
				
			}
			int i1 = i+1;
			for (int k = 0; k < arr.length; k++) {
				System.out.println("第"+i1+"次的结果为:"+arr[k]);
			}
			
		}
		return arr;
		
	}
	
	

	public static void main(String[] args) {
		int a[] = {4,5,7,1,3};
		int result[] = bubble(a);
		for (int i = 0; i < result.length; i++) {
			System.out.println(result[i]);
		}

	}

}

猜你喜欢

转载自blog.csdn.net/qq_29566629/article/details/88677289
今日推荐