冒泡排序

冒泡排序是一种简单的排序算法,通过多次遍历数组,调整相邻元素顺序来实现排序。文章以升序排列数组{21, 99, 3, 1024, 16}为例,详细解释了冒泡排序的运行过程,包括第一次遍历如何将最大值放到数组尾部,后续遍历如何逐步将第二大、第三大...等元素放到正确位置,直至完成排序。" 85401689,7864805,Python3爬取斗鱼弹幕:API调用实践,"['Python编程', '网络爬虫', 'API接口', '斗鱼直播', '数据抓取']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

冒泡排序

冒泡排序法是最基本的排序法之一,冒泡排序法的运行机制是通过循环遍历元素,并调整相邻元素顺序的一种简单排序方法。
冒泡排序法的运行情况如下(以将数组 {21, 99, 3, 1024, 16} 排列为升序为例):

1)冒泡排序法的第一次遍历目的是将数值最大的元素移动到数组的尾部。首先,将元素21与元素99进行比较,由于21 < 99,所以不用交换元素;其次,将元素99与元素3进行比较,由于99 > 3,所以需要交换元素(即99和3的位置互换,数组的序列被调整为 {21, 3, 99, 1024, 16});再次,将元素99与元素1024进行比较,由于99 < 1024,所以也不用交换元素;最后,将元素1024与元素16进行比较,由于1024 < 16,所以需要交换元素(即1024与16的位置互换)。经过第一次遍历将最大的元素1024调整到了数组的尾部,数组序列变为 {21, 3, 99, 16, 1024}。
(2)冒泡排序法的第二次遍历与第一次原理一致,只不过第二次遍历不再关系数组的尾部,因为经过第一次遍历后,数组的尾部已经存储了数组中数值最大的元素,所以第二次遍历的目的是将数组中数值第二大的元素,存储到数组的倒数第二个位置(即此时只关心数组前四个元素 {21, 3, 99, 16}的顺序)。首先,将元素21与元素3进行比较,由于21 > 3,所以需要交换元素(即21和3位置互换,数组的前四位序列被调整为 {3, 21, 99, 16});其次,将元素21与元素99进行比较,由于21 < 99,所以不用交换元素;最后,将元素99与元素16进行比较,由于99 > 16,所以需要交换元素(即99和16的位置互换)。经过第二次遍历数组序列变为 {3, 21, 16, 99, 1024}。
(3)依此类推,第三次遍历将数组中数值第三大的元素存储到数组的倒数第三个位置,第四次遍历将数组中数值第四大的元素存储到数组的倒数第四个位置,由于数组一共包含五个元素,则排序完成。

 

第一次遍历:

public class bijiao{ //第一轮的冒泡循环
     public static void main(String[] args) {               
            int []numberArray={21, 99, 3, 1024, 16};         
            for(int i=0;i<numberArray.length-1;i++){ //每循环一次遍历相邻两个元素的值          
            int temp=0;        
                if(numberArray[i]>numberArray[i+1]){     
                     temp=numberArray[i];     
                     numberArray[i]=numberArray[i+1];     
                     numberArray[i+1]=temp; } 
            } 
            for(int i=0;i<numberArray.length;i++){ 
                 System.out.println(numberArray[i]); } 
    } 
}

 

 

冒泡排序1

该for循环每循环一次就会将较大的数据放在适当的位置,比如loopTime=1;则将最大数据放在最后;loopTime=2;则将第二大数据放在倒数第二个元素位置;
 

public class mpao1 {

	public static void main(String[] args) {
		
		int []array={21, 99, 3, 1024, 16};
		for(int looptime=1;looptime<array.length;looptime++){
			for(int i=0;i<array.length-looptime;i++){    //该for循环每循环一次就会将较大的数据放在适当的位                  //  置,比如loopTime=1;则将最大数据放在最后;loopTime=2;则将第二大数据放在倒数第二个元素位置;
				int current=array[i];
				int next =array[i+1];
				if(number>next){  //如果前面的元素大于后面的,则需要调换 
					array[i]=next;
					array[i+1]=current;
				}
			}
		}
		for(int i=0;i<array.length;i++){
			System.out.println(array[i]);
		}
	}

}

 

冒泡排序2

public class maopao2 {

	public static void main(String[] args) {
		int []array={21,99,3,1024,16};
		for(int i=array.length;i>0;i--){
			for(int j=0;j<i-1;j++){
				if(array[j]>array[j+1]){
					int temp=array[j];
					array[j]=array[j+1];
					array[j+1]=temp;
				}
			}
		}
		
		for(int j=0;j<array.length;j++){
			System.out.println(array[j]);
		}
	}

}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值