您的位置:首页 > 其它

冒泡排序

2016-05-05 00:00 148 查看
冒泡排序可以这样理解:(从小到大排序)存在10个不同大小的气泡,由底至上地把较少的气泡逐步地向上升,这样经过遍历一次后,最小的气泡就会被上升到顶(下标为0),然后再从底至上地这样升,循环直至十个气泡大小有序。在冒泡排序中,最重要的思想是两两比较,将两者较少的升上去。它的最坏情况的时间复杂度是O(n²)。

#include <iostream>

#define maxNum 100000

using namespace std;

int times;
int Num[maxNum];

void BubbleSort(int Num[], int n){
int flag = 0;
for (int i = 0; i < n; ++i){
for (int j = n - 1; j>i; --j){
if (Num[j] > Num[j - 1]){
swap(Num[j], Num[j - 1]);
++times;
flag = 1;
}
}
if (!flag)break;
}
return;
}

int main(){
int testNum = 0;
while (cin >> testNum && testNum > 0 && testNum < maxNum){
times = 0;
memset(Num, 0, maxNum);
for (int i = 0; i < testNum; ++i)
cin >> Num[i];

BubbleSort(Num, testNum);

for (int j = 0; j < testNum; ++j)
cout << Num[j] << ends;

cout << endl << times << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: