数据结构与算法Java实现(1)——冒泡排序

版权声明:Songcz原创,如有转载请注明出处 https://blog.csdn.net/weixin_43701058/article/details/89893754

经过阿里的摧残,决定重新学习下数据结构与算法。
最近也有和同学聊面试的事,上个月有同学去东软面试,让他手撕算法写个冒泡排序。第一个学的排序算法就是冒泡排序,大一学C语言的时候就是冒泡排序,那就从冒泡排序开始我的学习之旅吧。
冒泡排序是一种稳定的,交换排序。
在这里插入图片描述
原理:比较两个相邻的元素,根据需求,将值大的元素交换至右/左端。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。(小到大)
时间复杂度:O(n2)最好情况O(n)
空间复杂度:O(l)
代码实现

import java.util.Arrays;
/**
 * 冒泡排序,从小到大
 * @author scz
 */
public class BubbleSort {
		public static void bubbleSort(int[] a){
			int i,j = 0;
			for(i = 0; i < a.length; i++){//数组多长就循环多少次
				int temp;//临时存储空间
				for(j = 1; j < a.length-i; j++){
					if(a[j-1] > a[j])
					{
						temp = a[j-1];
						a[j-1] = a[j];
						a[j] =temp;//核心
					}					
				}	
				System.out.println(Arrays.toString(a));			
			}			
		}
		
		public static void main(String[] args){
			int[] a = {5,4,7,6,2,8};
			BubbleSort.bubbleSort(a);		
		}
}


效果
在这里插入图片描述
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。即每一趟之后等至少会多有一个元素处于正确位置。

缺点:时间复杂度高,效率低,每次只能每一趟排序操作只能找到一个最大值或最小值,为了解决这个问题,我们将改进冒泡排序,也就是下一篇中要说的快速排序。

猜你喜欢

转载自blog.csdn.net/weixin_43701058/article/details/89893754