排序——冒泡排序(C++实现)

来源:互联网 发布:淘宝vip等级在那里看 编辑:程序博客网 时间:2024/06/17 23:58

冒泡排序算法的基本思想:假设待排序长为n,从后往前两两比较相邻元素的值,如为逆序,则交换它们,直到序列比较完。我们称为一趟冒泡,结果将最小的元素交换到待排序列的第一个位置(关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”,这就是冒泡排序名字的由来)。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少一个元素,每趟冒泡的结果把序列中最小元素放到了序列的最终位置,......,这样最多做n-1趟冒泡就能把所有的元素排序好。


冒泡排序的代码:

#include <iostream>using namespace std;void BubbleSort(int a[], int n){for (int i = 0; i < n - 1; ++i){bool flag = false;//表示本趟冒泡是否发生交换的标志for (int j = n - 1; j > i; --j)//一趟冒泡的过程{if (a[j - 1] > a[j])//若为逆序{flag = true;swap(a[j - 1], a[j]);//交换}}if (flag == false){return;//本趟遍历后没有发生交换,说明表已经有序}}}int main(){int n = 8;int a[20];for (int i = 0; i < n; ++i){cout << "Please enter a number : ";cin >> a[i];}BubbleSort(a, n);for (int i = 0; i < n; ++i){cout << a[i] << "  ";}cout << endl;return 0;}


冒泡排序算法的性能分析如下:

空间复杂度为O(1),最坏情况下时间复杂度为O(n^2),最好情况下(表中元素基本有序)时间复杂度为O(n),其平均时间复杂度为O(n^2)

稳定性:冒泡排序是一个稳定的排序方法。

原创粉丝点击