一、基本概念
依次比较相邻的两个数,将小数放在前面,大数放在后面。
第一趟比较结束后:最大数则放在底下倒数第一的位置(最底下)
第二趟比较结束后:第二大数放在底下倒数第二的位置
第三趟比较结束后:第三大数放在底下倒数第三的位置
、、、、、、
二、实现思路
设数组长度为N:
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
三、代码实现
int temp;//定义一个临时变量
for(int i=0;i<arr.length-1;i++){//冒泡趟数
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
四、改进
交换两个数若不用中间变量的话,可以使用以下方法:
方法1:
a = a + b;
b = a - b;
a = a - b;
方法2:
a = a^b;
b = a^b;
a = a^b;