冒泡排序--(原理和自己的例子)

package com.one;

public class PaixuMaopao {

	/**
	 * @Author lushuaiyin
	 * 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,
	 * 将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,
	 * 将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,
	 * 如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,
	 * 将最大的数放到了最后。在第二趟:仍从第一对数开始比较
	 * (因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),
	 * 将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的)
	 * ,第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。
	 * 如此下去,重复以上过程,直至最终完成排序。
  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
	 */
	public static void main(String[] args) {
		
		int[] source={23,5,12,59,78,21,100,79,66};
		int len=source.length;
		int tang=0;
		for(int j=0;j<source.length;j++){
			for(int i=0;i<len-1;i++){
				if(source[i]>source[i+1]){
					int temp=source[i+1];
					source[i+1]=source[i];
					source[i]=temp;
					System.out.println(source[i+1]+"交换位置"+source[i]);
				}
			}
			
			System.out.println("第"+(j+1)+"趟,找到倒数第"+(j+1)+"大的数是:"+source[len-1]);
			System.out.print("现在排列顺序是---");
			
			for(int d=0;d<source.length;d++){
				System.out.print(":"+source[d]);
			}
			System.out.println();
			System.out.println("------------------分割------------------");
			len--;
			tang++;
			
		}
		
		System.out.println("共排序了"+tang+"趟");
		System.out.println("排序后顺序是:");
		for(int k=0;k<source.length;k++){
			System.out.print("-"+source[k]);
		}
		
		
	}
}



控制台打印:

23交换位置5
23交换位置12
78交换位置21
100交换位置79
100交换位置66
第1趟,找到倒数第1大的数是:100
现在排列顺序是---:5:12:23:59:21:78:79:66:100
------------------分割------------------
59交换位置21
79交换位置66
第2趟,找到倒数第2大的数是:79
现在排列顺序是---:5:12:23:21:59:78:66:79:100
------------------分割------------------
23交换位置21
78交换位置66
第3趟,找到倒数第3大的数是:78
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
第4趟,找到倒数第4大的数是:66
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
第5趟,找到倒数第5大的数是:59
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
第6趟,找到倒数第6大的数是:23
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
第7趟,找到倒数第7大的数是:21
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
第8趟,找到倒数第8大的数是:12
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
第9趟,找到倒数第9大的数是:5
现在排列顺序是---:5:12:21:23:59:66:78:79:100
------------------分割------------------
共排序了9趟
排序后顺序是:
-5-12-21-23-59-66-78-79-100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值