冒泡排序说明:冒泡排序分从大到小和从小到大两种排序方式。它们的唯一区别就是两个数交换的条件不同,从大到小排序是前面的数比后面的小的时候交换,而从小到大排序是前面的数比后面的数大的时候交换。
冒泡排序的原理:从第一个数开始,依次往后比较,如果前面的数比后面的数大就交换,否则不作处理。这就类似烧开水时,壶底的水泡往上冒的过程。
根据动图:数组长度设为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)); }}