冒泡排序的C++语言实现示例

冒泡排序重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

其C/C++语言实现的示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>

using namespace std;

const int TESTS_LENGTH = 10;

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

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

for(int j = 1; j < length; j++) {
if(a[j - 1] > a[j]) {
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}

}

int main() {

int a[TESTS_LENGTH] = {100, 120, 110, 9, 2, 8, 1090, 20, 31, 57};

bubble_sort(a, TESTS_LENGTH);

// 打印运行结果
printf("\n");
for(int i = 0; i < TESTS_LENGTH; i++) {
printf("%d ", a[i]);
}
printf("\n");

}

改进的算法:

` cpp
void bubble_sort2(int a[], int length) {

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

    for(int j = 1; j < length; j++) {
        if(a[j - 1] > a[j]) {
            int temp = a[j-1];
            a[j-1] = a[j];
            a[j] = temp;
            flag = true;
        }
    }
    if(flag == false)
    break;

}

}

本文标题:冒泡排序的C++语言实现示例

文章作者:Morning Star

发布时间:2020年10月04日 - 10:10

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/cplus/cplus_bubble_sort/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。