冒泡排序解剖

冒泡排序解剖

算法介绍

冒泡排序是通过一系列的“交换”动作完成的,是交换类排序的一种。

首先第一个记录和第二个记录比较,如果第一个大吗,则两者交换,否则不交换;

然后第二个记录和第三个记录比较,如果第二个大,则两者交换,否则不交换……一直按这种方式进行下去,最终最大的那个记录被交换到了最后,一趟冒泡排序完成。

然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,使关键字次大的记录被安置到第n-1个记录的位置上……一直这样进行下去,直到在一趟排序过程中没有进行过交换记录的操作,这也是冒泡排序算法的结束条件

算法代码(Java)

 

 public static <T extends Comparable<? super T>> void bubbleSort(T[] a) {
		int i,j,flag;
		T temp;
		for(i=a.length-1;i>0;i--) {//最多进行a.length-1趟排序
			flag = 0;
			for(j=0;j<i;j++) {对当前无序区间a[0......i]进行排序
				if(a[j].compareTo(a[j+1])>0) {//大值交换到后面
					temp = a[j+1];
					a[j+1] = a[j];
					a[j] = temp;
					flag = 1;
				}
			}
			if(flag == 0) {//结束条件:某一趟排序是否有交换
				return;
			}
		}
	}

算法分析

最坏时间复杂度:O(n^2)

最好时间复杂度:O(n)

平均时间复杂度:O(n^2)

空间复杂度:O(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值