详解冒泡排序实现数组的排序(附源码)

所谓冒泡排序,就是不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。

第一步:从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换他们的位置。整个过程完成后数组中最后一个元素自然是最大值,这样就完成了第一轮比较。

第二步:除了最后一个元素,将剩余元素两两进行比较,过程与第一步相似,这样就可以将数组中第二大的数放在倒数第二个位置。

第三步:以此类推,持续对越来越少的元素进行上面的步骤,直到没有任何一个元素需要比较为止。

代码示例:

public class pao {
	public static void main(String args[]) {
		int[] arr= {9,8,3,5,2};
		System.out.print("原数组为:");
		//冒泡排序前先循环打印原数组元素
		for(int i=0;iarr[j+1]) {
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
			for(int k=0;k

运行结果:
详解冒泡排序实现数组的排序(附源码)_第1张图片  

 

比较过程:(数组第一个元素下标为0)

第一轮(i=1)符合j

j=0

第0个元素是9,第j+1个元素是8(9>8两元素交换位置)交换后数组为{8,9,3,5,2}

比较结束j++即j=1,符合j

第1个元素是9,第j+1个元素是3(9>3两元素交换位置)交换后数组为{8,3,9,5,2}

比较结束j++即j=2,符合j

第2个元素是9,第j+1个元素是5(9>5两元素交换位置)交换后数组为{8,3,5,9,2}

比较结束j++即j=3,符合j

第3个元素是9,第j+1个元素是2(9>2两元素交换位置)交换后数组为{8,3,5,2,9}

比较结束j++即j=4,不符合j

结束第一轮比较后数组变为{8,3,5,2,9}

结束第一轮i++,进行第二轮比较(i=2)符合j

j=0

第0个元素是8,第j+1个元素是3(8>3两元素交换位置)交换后数组为{3,8,5,2,9}

比较结束j++即j=1,符合j

第1个元素是8,第j+1个元素是5(8>5两元素交换位置)交换后数组为{3,5,8,2,9}

比较结束j++即j=2,符合j

第2个元素是8,第j+1个元素是2(8>2两元素交换位置)交换后数组为{3,5,2,8,9}

比较结束j++即j=3,符合j

第3个元素是8,第j+1个元素是9(8<9两元素不用交换位置)数组任为{3,5,2,8,9}

比较结束j++即j=4,不符合j

结束第二轮比较后数组变为{3,5,2,8,9}

结束第二轮i++,进行第三轮比较(i=3)符合j

j=0

第0个元素是3,第j+1个元素是5(3<5两元素不用交换位置)数组任为{3,5,2,8,9}

比较结束j++即j=1,符合j

第1个元素是5,第j+1个元素是2(5>2两元素交换位置)交换后数组为{3,2,5,8,9}

比较结束j++即j=2,符合j

第2个元素是5,第j+1个元素是8(5<8两元素不用交换位置)数组任为{3,2,5,8,9}

比较结束j++即j=3,符合j

第3个元素是8,第j+1个元素是9(8<9两元素不用交换位置)数组任为{3,2,5,8,9}

比较结束j++即j=4,不符合j

结束第二轮比较后数组变为{3,2,5,8,9}

结束第三轮i++,进行第四轮比较(i=4)符合j

j=0

第0个元素是3,第j+1个元素是2(3>2两元素交换位置)交换后数组为{2,3,5,8,9}

比较结束j++即j=1,符合j

第1个元素是3,第j+1个元素是5(3<5两元素不用交换位置)数组任为{2,3,5,8,9}

比较结束j++即j=2,符合j

第2个元素是5,第j+1个元素是8(5<8两元素不用交换位置)数组任为{2,3,5,8,9}

比较结束j++即j=3,符合j

第3个元素是8,第j+1个元素是9(8<9两元素不用交换位置)数组任为{2,3,5,8,9}

比较结束j++即j=4,不符合j

结束第二轮比较后数组变为{2,3,5,8,9}

结束第四轮i++,此时i=5不符合i

整个循环结束

你可能感兴趣的:(排序算法,java,算法)