冒泡排序
今天开始学习各大排序了。首先是冒泡排序。顾名思义,冒泡排序就是重得往下沉,才会有气泡上升。
对于一个数组,要求从小到大得进行排序。例如[36,25,48,12,25,65,43,57];
排序只需排数组长度减一次,因为倒数第二次排好后最后一个数也就在相应得位置了。
并且如果数组在外循环中就已经是排好得时候,那么就可以停止了,因此设立一个flag标志位。
冒泡排序是两个数两两比较。代码如下:
1 import java.util.Arrays; 2 3 public class BubbleSort { 4 public static void main(String[] args) { 5 int[] nums = {36,25,48,12,25,65,43,57}; 6 System.out.println(Arrays.toString(bubbleSort(nums)));; 7 } 8 9 private static int[] bubbleSort(int[] nums) { 10 int len = nums.length; 11 boolean falg; 12 for (int i = 0; i < len-1; i++) { 13 falg = false; 14 for (int j = 0; j < len -1 -i; j++) {//减i是因为最后i个数已经排好序,沉底了 15 if(nums[j]>nums[j+1]){//如果当前的值比下一个大,那么他们两个数换位置 16 int temp = nums[j+1]; 17 nums[j+1] = nums[j]; 18 nums[j] = temp; 19 falg = true; 20 } 21 } 22 if(!falg){//如果上述if条件始终未满足,也就是代表数组已经排好了,可以提前结束不必要的遍历。那么flag就没有变成true。那么直接退出循环。 23 break; 24 } 25 } 26 return nums; 27 } 28 29 }