算法学习笔记之冒泡算法

简介: 算法学习笔记之冒泡算法

算法学习笔记之冒泡算法

冒泡算法原理

  • 对要排序的数组中的数据,依次比较相邻的两个数据的大小。
  • 如果前面的数据大于后面的数据,就把这两个数据进行交换。这样一轮比较和交换过后,就把最小的数据放在数组的最前面;或者说最大的数据放在数组的最后面
  • 按照上述比较和交换的方法,把剩下的数据再进行相同操作,最后,便可按照从小到大或者从大到小的顺序对数组完成排序。


冒泡算法 Java 的实现

package top.simba1949;
/**
 * 交换排序——冒泡排序算法
 *
 * 冒泡排序算法原理:
 *     1. 对要排序的数组中的数据,依次比较相邻的两个数据的大小。
 *     2. 如果前面的数据大于后面的数据,就把这两个数据进行交换。这样一轮比较和交换过后,就把最小的数据放在数组的最前面;
 *     或者说最大的数据放在数组的最后面
 *     3. 按照上述比较和交换的方法,把剩下的数据再进行相同操作,最后,便可按照从小到大的顺序对数组完成排序。
 *
 * @author SIMBA1949
 * @date 2019/6/28 22:20
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] intArr = {1, 9, 90, 20, 30, 66, 34, 55};
        bubbleSortImp(intArr);
        for (int i : intArr) {
            System.out.print(i + "\t");
        }
    }
    /**
   * 冒泡算法的实现
   * @param arr
   */
    public static void bubbleSortImp(int[] arr){
        if (null == arr || arr.length <= 1){
            return;
        }
        // 假设第一个数是最大数,冒泡最大的数放在数组后面
        for (int area = arr.length - 1; area >= 0; area--){
            for (int i = 0; i < area; i++) {
                // 如果前面的数据比后面的大,数据交换
                if (arr[i] > arr[i+1]){
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
    }
}
目录
相关文章
|
2月前
|
搜索推荐 算法
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
|
2月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
24 0
|
4月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
4月前
|
搜索推荐 算法
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
|
5月前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
4月前
|
人工智能 算法 搜索推荐
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
5月前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
5月前
|
算法 C++
c++算法学习笔记 (13) 链表
c++算法学习笔记 (13) 链表
|
5月前
|
算法 C++
c++算法学习笔记 (12) 区间合并
c++算法学习笔记 (12) 区间合并
|
5月前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
下一篇
无影云桌面