冒泡排序说明:冒泡排序分从大到小和从小到大两种排序方式。它们的唯一区别就是两个数交换的条件不同,从大到小排序是前面的数比后面的小的时候交换,而从小到大排序是前面的数比后面的数大的时候交换。
冒泡排序的原理:从第一个数开始,依次往后比较,如果前面的数比后面的数大就交换,否则不作处理。这就类似烧开水时,壶底的水泡往上冒的过程。
根据动图:数组长度设为n。外层共循环了n-1次,外层循环增加一次,对应内层循环就 减少一次。
public class BubblerSortTest {
/**
* 冒泡排序
* 规则:从小到大排序 大的在右边小的在左边;
*
*/
@Test
public void smallToLargeSorlTest(){
//定义排序的数组
int[] arr = {2, 8, 13, 11, 6, 7,-9};
//打印排序前的数据
System.out.println("排序前:" + Arrays.toString(arr));
for (int i = 0; i < arr.length-1; i++) { //外层循环控制排序趟数
for (int j = 0; j < arr.length-1-i; j++) { //内层循环控制每一趟排序多少次
if (arr[j]>arr[j+1]){ //两两数值判断
int temp = arr[j];
arr[j] = arr[j+1]; //把大的值交换到后面
arr[j+1] = temp; //把小的值交换到后面
}
}
}
System.out.println("排序后:" + Arrays.toString(arr));
}
/**
* 排序规则:从大到小排序 大的在左边小的在右边;
* 说明:如需从大到小排列,修改if语句的大于符号即可
*/
@Test
public void largeToSmallSorlTest(){
//定义排序的数组
int[] arr = {2, 8, 13, 11, 6, 7,-9};
//打印排序前的数据
System.out.println("排序前:" + Arrays.toString(arr));
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
//修改if语句的大于符号即可
if (arr[j]<arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("排序后:" + Arrays.toString(arr));
}
}