冒泡排序算法

1. 冒泡排序算法

将元素两两进行比较,大的置后,小的置前。

示例:现有一个数组{5,4,3,2,1}

排序次数排序结果比较次数
原始数组5,4,3,2,10
第一轮排序后4,3,2,1,54
第二轮排序后3,2,1,4,53
第三轮排序后2,1,3,4,52
第四轮排序后1,2,3,4,51

通过上例可以总结出,经过每次排序后都会产生一个较大值,由此向前递进,直至排序完成,因此每一次排序产生的最大值可以不必参与到下一次的排序中。由此可以总结出,有n个元素进行冒泡排序,一共需要n-1轮排序,每一轮需要比较的次数为n-i次。

package algotithm;

import java.util.Arrays;

//冒泡排序算法
public class bubbleSort {
	
	public static void Bubble(int sort[]) {
			
		/**
		 * 3个元素
		 * 原始数据: 3 2 1
		 * 第一轮排序后:2 1 3,交换2次元素
		 * 第二轮排序后:1 2 3,交换1次元素
		 * N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次
		 * 每进行一趟排序都会找出一个较大值
		 * 冒泡排序最好的时间复杂度为O(n)
		 * 冒泡排序总的平均时间复杂度为:O(n^2) 
		 * **/
		
		//判断边界条件
		if (sort == null || sort.length < 2) {
			return;
		}
		
		for (int i = 0; i < sort.length - 1; i++) {//交换轮次
			for (int j = 0; j < sort.length - 1 -i; j++) {//交换次数
				if (sort[j] > sort[j + 1]) {
					int temp = sort[j];
					sort[j] = sort[j+1];
					sort[j+1] = temp;
				}
			}
		}	
	}
	
	public static void main(String[] args) {
		int[] sort = {9,8,7,6,5,4,3,2,1,0};
		//int[] sort = {2};
		Bubble(sort);
		System.out.println(Arrays.toString(sort));
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值