算法入门学习----1.1冒泡排序

本文详细介绍了冒泡排序的原理及其实现过程,并分析了其时间复杂度和空间复杂度。通过具体的Java代码示例,帮助读者理解冒泡排序算法的工作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、冒泡排序的原理

 一个数组a[]有N个元素:
 ①第一次循环(n-1)

    a[0]和a[1]进行比较,如果a[0]大于a[1],两者进行交换,否则不交换。
 a[1]和a[2]进行比较,如果a[1]大于a[2],两者进行交换,否则不交换。
  ......................

 a[n-2]和a[n-1]进行比较,如果a[n-2]大于a[n-1],两者进行交换,否则不交换。

    ②第二次循环(n-2)

    a[0]和a[1]进行比较,如果a[0]大于a[1],两者进行交换,否则不交换。
 a[1]和a[2]进行比较,如果a[1]大于a[2],两者进行交换,否则不交换。
  ......................

 a[n-3]和a[n-2]进行比较,如果a[n-3]大于a[n-2],两者进行交换,否则不交换。

    ③第三次循环(n-3)

    ............

    第n-1次循环(1)

    a[0]和a[1]进行比较,如果a[0]大于a[1],两者进行交换,否则不交换。


二、冒泡排序时间复杂度和空间复杂度

时间复杂度:1+2+3+......(n-1)=n*(n-1)/2    所以时间复杂度为 n^2
空间复杂度:①最优的空间复杂度就是开始元素顺序已经排好了,则空间复杂度为:0;
        ②最差的空间复杂度就是开始元素逆序排序了,则空间复杂度为:O(n);
        ③平均的空间复杂度为:O(1);

三、冒泡排序代码的实现(Java)

public class Maopao {
	public static void main(String[] args){
		int[] arr=new int[]{1,5,6,89,4,6,12,48,5,23};
		maopao(arr);
	}
	public static void show(int[] arr){  //输出函数
		for(int a: arr){
			System.out.println(a);
		}
	}
	public static void maopao(int[] arr){	
		for(int n=arr.length-1;n > 0;n--){   //第一层,表示需要n-1次大循环
			for(int m=0;m < n;m++){          //第二层,表示每次大循环需要多少次比较
				if(arr[m] > arr[m+1]){
					int temp =0;
					temp = arr[m];
					arr[m] = arr[m+1];
					arr[m+1] = temp;
				}
			}
		}
		show(arr);
	}
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值