冒泡排序

数组的冒泡排序

**冒泡排序是一个著名的排序方法 是八大排序方法之一 **

冒泡排序的核心就是 两两相比 交换求值

//建立一个数组,数组里的值呈无规则排序 
int array1[]={7,3,35,54,33,67,76,988,98,6,75,976};
//我们让每次大循环找出一个最大数或者最小数移动到最后一位
//首先建立一个循环
//因为每次循环都会从数组没被排序的值中找出一个最大或者最小数
//当数组中的最大值或者最小值找出到只剩下一个数字的时候,那它一定是最小值或者最大值 我们可以少找一次
//所以我们的大循环次数要比数组长度少一 我们直接从1开始循环 就等于数组长度减一
 for (int n = 1; n < a.length; n++) {
            
     }
//建立内部循环让数组中的值每次两两相比 首先把外循环拿过来       
//在内循环中我们让数值两两相比,在满足条件的情况下进行数值互换 
//以这个数组为例 int array1[]={7,3,35,54,976,33,75}; 
//代表数组下标 条件是大于 >  升序排序 	
//在小循环中首先7[0]和3[1]比较    7大于3  条件成立   数值互换:将3赋值给下标[0] 7赋值给下标[1]
//循环继续     7[1]和35[2]比较   7小于35 条件不成立  数值不变
//			 35[2]和54[3]比较  35小于54 条件不成立  数值不变   
//           54[3]和976[4]比较 54小于976 条件不成立 数值不变
//			 976[4]和33[5]比较 976大于33 条件成立 	  数值互换
//           976[5]和75[6]比较 976大于75 条件条件成立   数值互换  
//第一次循环结束找出一个最大值 976 
//在小循环中 7个数值进行6次比较得到一个最大值 所以循环次数为数组长度减1 
//因为每次循环都找出一个最大值 所以每次求出的最大值是不需要再进行比较的 比较次数需要递减 即循环次数递减
//在外循环中n的初始值为1 小循环每循环一次n就自增一次 小循环次数就为数组长度减n 以达到循环次数递减

for (int n = 1; n < a.length; n++) {
        for (int i = 0; i <a.length-n ; i++) {
                if (a[i]>a[i+1]){	//判断条件为大于时每次找出一个最大值 升序排序  为小于时每次找出一个最小值 降序排序
                    int num=a[i];	//条件成立发生数据交换时 设置一个变量接收 下标为i的数值
                    a[i]=a[i+1];	//用下标i接收下标i+1的值
                    a[i+1]=num;		//用下标i+1接收变量num的值 完成数据交换
                }
            }     
     }

冒泡排序数据交换的本质来源于生活

		就像是 我们有一瓶可乐 一瓶雪碧 

​ 我们想把可乐装在雪碧瓶里

​ 把雪碧装在可乐瓶里

​ 我们可以找一个容器 锅碗瓢盆 把可乐倒进去

​ 再把雪碧倒进可乐瓶 然后再把容器里的可乐倒进雪碧瓶子里

​ 这样就完成了交换

变量就是我们作为交换中介的容器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值