21xrx.com
2024-12-22 23:25:26 Sunday
登录
文章检索 我的文章 写文章
用C++编写冒泡排序算法
2023-06-30 02:38:16 深夜i     --     --
C++ 冒泡排序 算法 排序 数组

冒泡排序算法是一种简单而有效的排序算法,它的基本思想是不断比较相邻的元素并交换它们,直到没有任何一对元素需要交换为止。这种算法的时间复杂度为O(n^2),由于它的效率较低,在实际应用中往往被其他高效的排序算法所代替。不过,了解它的原理和实现还是很有意义的。

下面,我们使用C++语言来介绍冒泡排序的实现过程。首先,我们定义一个待排序的整数数组,并将它打印出来,以便了解排序效果。

#include

using namespace std;

int main()

{

int a[] = 90;

int n = sizeof(a) / sizeof(int);

cout << "待排序的序列为:" << endl;

for (int i = 0; i < n; i++)

{

cout << a[i] << " ";

}

cout << endl;

return 0;

}

输出结果为:

待排序的序列为:

21 68 39 90 17 58 37 45 89 21

接下来,我们使用冒泡排序算法对这个数组进行排序。在排序过程中,我们采用了两种不同的实现方式:基本冒泡排序和改进版冒泡排序。其中,基本冒泡排序是每一轮都从前往后比较,将最大的数移到末尾的方式;而改进版冒泡排序在基本冒泡排序的基础上加入了一个flag变量,用于表示是否发生了交换,如果没有交换则说明已经排序完成,可以提前退出循环。

基本冒泡排序的代码如下:

void bubble_sort(int a[], int n)

{

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

{

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

{

if (a[j] > a[j + 1])

{

int temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

}

调用代码如下:

bubble_sort(a, n);

cout << "基本冒泡排序的结果为:" << endl;

for (int i = 0; i < n; i++)

{

cout << a[i] << " ";

}

cout << endl;

输出结果为:

基本冒泡排序的结果为:

17 21 21 37 39 45 58 68 89 90

改进版冒泡排序的代码如下:

void bubble_sort_improved(int a[], int n)

{

bool flag = true;

for (int i = 0; i < n - 1 && flag; i++)

{

flag = false;

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

{

if (a[j] > a[j + 1])

{

int temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

flag = true;

}

}

}

}

调用代码如下:

bubble_sort_improved(a, n);

cout << "改进版冒泡排序的结果为:" << endl;

for (int i = 0; i < n; i++)

{

cout << a[i] << " ";

}

cout << endl;

输出结果为:

改进版冒泡排序的结果为:

17 21 21 37 39 45 58 68 89 90

可以看出,无论是基本冒泡排序还是改进版冒泡排序,它们都能够对给定的数组进行排序。不过,由于冒泡排序算法的时间复杂度较高,对于大规模数据的排序效率远不如其他高效的排序算法,因此在实际应用时需要根据实际情况来选择合适的排序算法。

  
  

评论区

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