欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构和算法(十三)冒泡排序算法

程序员文章站 2022-06-04 15:04:45
...

1. 数据结构和算法(十三)冒泡排序算法

1.1 什么是冒泡排序

  • 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。

1.2 算法基本思想

  比较相邻的两个数,如果第一个数比第二个数大,则两数交换。对之后的相邻元素进行同样的工作,从开始到最后一对,这样进行一次排序后,数据的最后一位会是最大值 ,第一次循环进行的次数为 array.length-1。之后对所有的元素重复以上的步骤,且以后每次循环的次数为array.length-1-i (i为循环第几次 ,i 从零开始);重复上述

数据结构和算法(十三)冒泡排序算法

1.3 冒泡排序复杂度分析

冒泡排序复杂度当最好的情况时,也就是要排序的表本身就是有序的,那么我们比较次数,那么可以判断出就是n-1次的比较,没有数据交换,此时时间复杂度为O(n)。当最坏的情况,即待排序是逆序的情况,此时需要比较
数据结构和算法(十三)冒泡排序算法次,此时时间复杂度为 数据结构和算法(十三)冒泡排序算法

1.3 冒泡排序代码实现

package com.yuanxw.datastructure.chapter10;

import java.util.Arrays;

/**
 * 冒泡排序
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] array = new int[]{10, -7, 8, -2, 5, -4};
        System.out.println("【冒泡排序】前的结果:" + Arrays.toString(array));
        bubbleSort(array);
        System.out.println("【冒泡排序】后的结果:" + Arrays.toString(array));
    }

    /**
     * 冒泡排序
     *
     * @param array
     */
    public static void bubbleSort(int[] array) {
        // 定义临时变量
        int temp = 0;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                // //相邻两个元素作比较,如果前面元素大于后面,进行交换
                if (array[j] > array[j + 1]) {
                    temp = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
}

执行结果:

【冒泡排序】前的结果:[10, -7, 8, -2, 5, -4]
【冒泡排序】后的结果:[-7, -4, -2, 5, 8, 10]

    – 以上为《数据结构和算法(十三)冒泡排序算法》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

——厚积薄发(yuanxw)

相关标签: 数据结构和算法