冒泡排序

首先要说一点:冒泡排序的效率非常低,当然其优势是内存占用少.

伪代码:

      for   i  between   0  and   (array length -2 ) : 
          if (array (i+1))   < (array(i) ) : 
            交换 (array (i+1))  和 (array (i)) 的位置一直重复迭代即可实现排序

java代码实现:

import java.util.Arrays;

public class MyselfSort {
    public static void main(String[] args) {
        boolean flag ;
        int []  nums = {5,3,6,3,7,2,44,0};
        do {
            flag = false;
            for (int i = 0 ;  i < nums.length-1 ; i ++ ) {
                if (nums[i+1]>nums[i]){
                    int tmp = nums [i+1];
                    nums[i+1]=nums[i];
                    nums[i]=tmp;
                    flag=true;
                }
            }
        }while (flag);

        Arrays.stream(nums).forEach(System.out::println);
    }
}

冒泡排序: 两个杯子交换杯子里的水,需要一个交换的杯子
如上: flag标识来界定是否循环遍历了整个集合
从第一个元素开始和第二个元素比较,和第三个比较,一直到最后一个比较
发现第二个比第一个大,发生交换,并继续循环

import java.util.Arrays;

    public class MyselfSort {
    public static void main(String[] args) {
        int[] arr = {5, 3, 6, 7, 2, 44, 0};
        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;
                }
            }
        }
        Arrays.stream(arr).forEach(System.out::println);
    }
}

你可能感兴趣的:(冒泡排序)