冒泡排序

一、冒泡排序介绍

冒泡排序一般来说是我们最早接触到的排序算法,它的核心思想就是“比较大小,交换数字”,时间复杂度为O(n2)。

它的实现过程也非常的简单,只需要掌握循环以及判断语句的使用就可以实现。

二、实现以及详解

先展示一下代码:

    //定义一个arr数组并赋值    
int arr[9] = {1, 8, 5, 4, 2, 9, 7, 6, 3};

    //进行冒泡排序
    for (int i = 0; i < 9;i++){
        for (int j = i + 1; j < 9; j++){
    //冒泡排序的核心代码,这里是进行升序排序
            if(arr[i] > arr[j]){
                int val = arr[i];
                arr[i] = arr[j];
                arr[j] = val;
            }
        }
    }

    for (int i = 0; i < 9; i++)
        cout << arr[i] << " "

我们使用了一个外层循环以及一个内层循环,外层循环用于遍历数组,内层循环用于排序。

我们以数组中的元素8为例,此时的i = 1,j = 2,那么对应数组中的元素就是8 和 5(因为数组下标是以0开始的)。

因为我们是要进行升序排序,所以当我们发现arr[i] > arr[j]时我们就要交换两个数的值。

这里的arr[i] = 8,arr[j] = 5,满足条件,因此我们需要交换两个数的值,但是如果我们直接让arr[i] = arr[j]的话就会发现我们无法对arr[i]进行赋值。

因此我们引入了一个中间值val,用于存储被赋值前的arr[i],也就是val = arr[i],这样的话我们就能够对arr[j]进行赋值了。

在上述中我们其实就是实现了一个““比较大小,交换数字”的过程。从而完成了升序的冒泡排序,降序就只需要将“>”改为“<”既可。

 

posted @ 2023-11-29 20:07  clinx000  阅读(13)  评论(0编辑  收藏  举报