21xrx.com
2024-05-20 14:25:04 Monday
登录
文章检索 我的文章 写文章
C++ 冒泡排序程序实现
2023-07-11 13:08:24 深夜i     --     --
C++ 冒泡排序 程序实现

冒泡排序是最基本的排序算法之一,也是大多数编程语言的第一篇教程之一。C++作为一种高效且常用的编程语言,其冒泡排序程序实现也备受关注。

冒泡排序是一种以交换为基础的排序算法,依次比较数组相邻元素的大小,如果前一个元素大于后一个元素,则交换这两个元素的位置。在第一轮比较后,最小的元素会被移到数组的最前面。接下来,在第二轮比较中,除了已经排序好的元素,再将数组中剩下的未排序元素进行比较交换。重复此过程,直到所有元素都被排好序。

下面是C++冒泡排序程序实现的代码:


#include <iostream>

using namespace std;

void bubble_sort(int arr[], int length) {

  for (int i = 0; i < length - 1; i++) {

    for (int j = 0; j < length - i - 1; j++) {

      if (arr[j] > arr[j + 1]) {

        int temp = arr[j];

        arr[j] = arr[j + 1];

        arr[j + 1] = temp;

      }

    }

  }

}

int main() {

  int arr[] = 1;

  int length = sizeof(arr) / sizeof(int);

  bubble_sort(arr, length);

  for (int i = 0; i < length; i++) {

    cout << arr[i] << " ";

  }

  cout << endl;

  return 0;

}

在逐行解释以上程序实现代码之前,让我们先打印出数组元素的值:


5 2 6 3 1 4 7

接下来,让我们看看这个程序的实现过程:


void bubble_sort(int arr[], int length) {

  for (int i = 0; i < length - 1; i++) {

    for (int j = 0; j < length - i - 1; j++) {

      if (arr[j] > arr[j + 1]) {

        int temp = arr[j];

        arr[j] = arr[j + 1];

        arr[j + 1] = temp;

      }

    }

  }

}

定义了一个名为 'bubble_sort' 的函数,函数接收两个参数,分别是数组 'arr' 和数组长度 'length'。在这个函数中,我们使用了两个 'for' 循环,第一个 'for' 循环是用来控制需要比较的轮次,也就是对数组进行几次遍历。第二个 'for' 循环是用来进行相邻元素比较的,每轮遍历都会比较当前元素与下一个元素的大小关系。一旦当前元素比下一个元素大,就交换两个元素。这样,每轮 comparison-winning 的元素都会被放置到合适的位置上。当它们不再需要比较时,它们将被留在那里,供下一轮从剩余元素的中进行选择。

接下来,让我们看看如何调用这个冒泡排序函数:


int main() {

  int arr[] = 3;

  int length = sizeof(arr) / sizeof(int);

  bubble_sort(arr, length);

  for (int i = 0; i < length; i++) {

    cout << arr[i] << " ";

  }

  cout << endl;

  return 0;

}

首先定义整数数组 'arr',并初始化它的值。接下来,使用第二行代码计算数组 'arr' 的长度。然后,调用函数 'bubble_sort',并将数组 'arr' 和它的长度 'length' 作为参数传递给函数。最后,使用 'for' 循环遍历输出排序后的数组。

运行程序,输出一个已排序的数组:


1 2 3 4 5 6 7

上述代码表明,经过排序后,数组已按升序排列。

在C++中,冒泡排序已经是一种简单、易于理解、并且非常实用的排序算法。虽然它的性能可能不如快速排序、归并排序等,但是它的实现简单易懂,特别是在小数据集的情况下,它可以快速地完成排序。因此,掌握冒泡排序算法以及代码实现,对于程序猿来说是非常必要的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复