冒泡排序

今天开始学习各大排序了。首先是冒泡排序。顾名思义,冒泡排序就是重得往下沉,才会有气泡上升。

对于一个数组,要求从小到大得进行排序。例如[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 }

 

posted @ 2021-03-14 21:07  =凌晨=  阅读(102)  评论(0编辑  收藏  举报