数组的冒泡排序
**冒泡排序是一个著名的排序方法 是八大排序方法之一 **
冒泡排序的核心就是 两两相比 交换求值
//建立一个数组,数组里的值呈无规则排序
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的值 完成数据交换
}
}
}
冒泡排序数据交换的本质来源于生活
就像是 我们有一瓶可乐 一瓶雪碧
我们想把可乐装在雪碧瓶里
把雪碧装在可乐瓶里
我们可以找一个容器 锅碗瓢盆 把可乐倒进去
再把雪碧倒进可乐瓶 然后再把容器里的可乐倒进雪碧瓶子里
这样就完成了交换
变量就是我们作为交换中介的容器。