使用动态数组实现冒泡排序

C++Beginner
立即练习

介绍

在本实验中,我们将学习如何用 C++ 编写算法来实现冒泡排序技术。冒泡排序是最流行且简单的排序技术之一,它通过比较数组中相邻的两个元素,并在它们的顺序不正确时交换它们的位置。

声明所需的变量和头文件

我们将使用以下命令在 ~/project 目录下创建一个名为 main.cpp 的新文件:

touch ~/project/main.cpp

首先,我们需要声明程序所需的变量和头文件。在这一步中,我们将包含头文件 iostream 并定义命名空间 std

#include<iostream>
using namespace std;

声明一个函数以实现通用冒泡排序算法

在这里,我们将在 C++ 程序中声明一个名为 bubble_sort 的函数,该函数接受待排序的数组和数组的大小。该函数将包含冒泡排序技术的实现,通过使用 for 循环、交换以及 if/else 语句来完成排序。

int bubble_sort(int n,int array[]){
    int temp;
    for(int i=0;i<n-1;i++){
        for(int j=0;j<n-i-1;j--){
            if(array[j]>array[j+1]){
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
            }
        }
    }
return 0;
}

声明一个函数以实现优化后的冒泡排序算法

在优化后的冒泡排序中,我们会在每一轮检查是否有元素被交换。如果在上一轮中没有发生交换,则说明数组已经排序完成。在这一步中,我们将实现 bubble_sort 函数来实现优化后的冒泡排序算法。该函数接受待排序的数组和数组的大小。

int bubble_sort(int n,int array[]){
    int temp, flag;
    for(int i=0;i<n-1;i++){
        flag = 0;
        for(int j=0;j<n-i-1;j++){
            if(array[j]>array[j+1]){
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
                flag=1;
            }
        }
        if(flag==0){
            break;
        }
    }
    return 0;
}

定义主函数

在这里,我们将定义主函数,其中声明待排序的数组及其大小。在这一步中,我们还将调用 bubble_sort 函数以升序排列数组。

int main(){

    int arr[]={5,6,9,2,3};
    int n = sizeof(arr)/(sizeof(arr[0]));
    bubble_sort(n,arr);
    cout<<"Elements after sorting of the array:- "<<endl;
    for(int i=0;i<n;i++){
        cout<<arr[i]<<" ";
    }
    return 0;
}

编译并运行代码

在这一步中,我们将在 Ubuntu 系统的终端中编译并运行代码。要编译代码,请输入以下命令:

g++ ~/project/main.cpp -o main

要运行代码,请输入以下命令:

./main

总结

在本实验中,我们成功学习了如何使用 C++ 中的动态数组实现冒泡排序。我们还了解了一种优化的冒泡排序技术,该技术对某些特定但高效的数组非常有效。通过遵循上述教程,你可以使用 C++ 中的动态数组实现冒泡排序技术,以升序或降序排列数组。