lowB三人组---冒泡排序原理和实现

简介: lowB三人组---冒泡排序原理和实现

原理分析



20191105100746502.gif

/**
* 冒泡排序
* 排序:默认是正序,从小到大排序
* 原理: 从下往上排序, 叫做从前往后排序, 如果前面的数比后面的数大,则交换2个数的位置
* 元素个数为; N
* 外层循环: 比较的总趟数 N-1, 每趟数为: i(从0开始)
* 内层循环: 无序区范围大小 N-i-1, 也可以理解为:一趟中比较的次数,注意: 指针指向的数从0开始, 最后一个数据不用比较,
* 代码关键点: 趟, 无序区范围
* 优化: 如果冒泡排序中的一趟排序没有发生交换,则说明列表已经有序,可以直接结束算法
* @param arr
*/


代码如下:

package com.company;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        System.out.println(1);
        int[] arr = {7, 2, 5, 8, 1, 3, 6, 9, 4};
        dubbleSort(arr);
    }
    /**
     * 冒泡排序
     * 原理: 从下往上排序, 叫做从前往后排序, 如果前面的数比后面的数大,则交换2个数的位置
     * 元素个数为; N
     * 外层循环: 比较的总趟数 N-1, 每趟数为: i(从0开始)
     * 内层循环: 无序区范围大小 N-i-1, 也可以理解为:一趟中比较的次数,注意: 指针指向的数从0开始, 最后一个数据不用比较,
     * 代码关键点: 趟, 无序区范围
     * 优化: 如果冒泡排序中的一趟排序没有发生交换,则说明列表已经有序,可以直接结束算法
     * @param arr
     */
    public static void dubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            boolean flag = false;
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                    flag = true;
                }
            }
            System.out.println(Arrays.toString(arr));
            if (!flag){
               return;
            }
        }
    }
}


运行结果:

5d4c6812c8535adbb050f4ddf2e1bce8.png


算法复杂度


因为是2层循环,也没有折半,所以是: O(n² )


完成



相关文章
|
6月前
|
搜索推荐
排序算法---选择排序-----详解&&代码
排序算法---选择排序-----详解&&代码
|
6月前
|
搜索推荐
排序算法---希尔排序---详解&&代码
排序算法---希尔排序---详解&&代码
|
6月前
|
搜索推荐
排序算法---冒泡排序----详解&&代码
排序算法---冒泡排序----详解&&代码
|
6月前
|
搜索推荐
排序算法---插入排序-----详解&&代码
排序算法---插入排序-----详解&&代码
|
7月前
|
搜索推荐 算法 Python
不了解冒泡排序的原理?
不了解冒泡排序的原理?
55 5
|
7月前
|
算法
lowB三人组---冒泡排序原理和实现
lowB三人组---冒泡排序原理和实现
|
7月前
LowB三人组--选择排序原理和实现
LowB三人组--选择排序原理和实现
|
存储 人工智能 搜索推荐
冒泡排序:了解原理与实现
冒泡排序:了解原理与实现
91 0
|
搜索推荐
冒泡排序的原理
冒泡排序算法的原理如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较 白话就是:比如有6个数,你需要比较5趟,这个是固定死的
247 0
|
算法 搜索推荐
算法初识---冒泡排序
冒泡排序同选择排序一样是一种排序算法,它的主要方法是对比相邻两个数的大小,如果前边得数比后面的数的,则他们交换,否则比较接下来相邻的两个数,第一轮比较到最后会确定最后一个数的位置,即最后一个数是最大,每进行一轮就会排好一个数,直到把所有的数都排好。
64 0