冒泡排序是依次比较相邻的两个元素,如果第一个比第二个大,就交换他们两个,交换后原先的大数,向后移动一个位置 ,小数向前移动一个位置,这样原先的第一个数(大数)排在了第二位,原先的第二位数(小数)排在了第一位 ;如果第一个数比第二个数小,不进行交换。再继用
现在 第二个数和第三个数比较 如果现在第二个数大于第三个数 则交换位置 否则不交换
接着 3和4 4和5 。。。依次比较直到数组结束(这仅仅是一次完整的循环) 这样每次大数都向后移动 ,小数向前移动 一次循环完后 再进行第二次 直到所有的数在数组中有序的排列
这是一种排序的方法 冒泡排序只是一个形象的叫法
特别注意的是:只要符合这种方法对数组进行排序,无论代码实现过程是怎样的,都叫冒泡排序
//a = 1, b = 4, c = 7, d = 2
//1、 2、 3、 4
//abcd四个人相遇了,他们要排队,身高高的人站前面,
//这四人先是随便站的,就按abcd的顺序站,每个人交换位置只能和旁边的人交换
//2号位开始发话了
//b对a说: 我比你高站前面没毛病,
//b再看c说:你比我高你厉害,你跟你前面的比比看谁更高
//c于是对d说:我比你高,你到后面去,于是c和d交换位置
// => a = 1,b = 4,d = 2,c = 7
// 1、 2、 3、 4、
//3号位开始说话了
//心想我刚和c比过肯定比他矮,就不找他比了
//d对a说:我比你高站你前面没毛病,
//d再看b说:你比我高你站我前面,于是d和b交换位置
//=> a = 1, d = 2, b = 4, c = 7
// 1、 2、 3、 4、
//最后的结果 a = 1, d = 2, b = 4, c = 7
冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。[1]public class BubbleSort{ public void sort(int[] a) { int temp = 0; for (int i = a.length - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if (a[j + 1] < a[j]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } }}