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

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp/BasicsGroup -.-> cpp/variables("Variables") cpp/BasicsGroup -.-> cpp/data_types("Data Types") cpp/BasicsGroup -.-> cpp/arrays("Arrays") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/ControlFlowGroup -.-> cpp/if_else("If...Else") cpp/ControlFlowGroup -.-> cpp/for_loop("For Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/variables -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/data_types -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/arrays -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/conditions -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/if_else -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/for_loop -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/output -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/files -.-> lab-96173{{"使用动态数组实现冒泡排序"}} cpp/code_formatting -.-> lab-96173{{"使用动态数组实现冒泡排序"}} end

声明所需的变量和头文件

我们将使用以下命令在 ~/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++ 中的动态数组实现冒泡排序技术,以升序或降序排列数组。